Home » Excel VBA Rangeオブジェクト » セル数式 » VBAで数式が文字列になってしまう

VBAで数式が文字列になってしまう

対象:Excel 2010, Excel 2013, Windows版Excel 2016

「数式が文字列になる マクロ activecell.formula =」
という検索キーワードをキッカケにして、数式を文字列にするExcelマクロをご紹介しました。

「数式が文字列になる マクロ activecell.formula =」
という検索は、まったく別のことを探していた可能性も考えられます。
RangeオブジェクトのFormulaプロパティを使って、数式を入力したつもりなのに、

Range.Formula

文字列になってしまったという可能性です。

[スポンサードリンク]

数式が文字列になってしまう理由

理由・原因は大きく2つ考えられそうです。

一つは、数式を入力したつもりが実は数式になっていなかったケース。
もう一つは、セルの表示形式が文字列だったケースです。

数式を入力したつもりが数式になっていなかったサンプル

例えば「=A1+B1」という数式を入力するつもりで、以下のような代入文にしていた場合は、もちろん文字列になってしまいます。
 ActiveCell.Formula = "A1+B1"

本当は、
  ActiveCell.Formula = "=A1+B1"
としなければならないにも関わらず、直前に代入演算子の「=」があるために、
  ActiveCell.Formula = "A1+B1"
セル内数式の先頭に必要な「=」が抜けていることに、気付けないというケースです。
正しく、

 ActiveCell.Formula = "=A1+B1"
にしましょう。

表示形式が文字列の場合VBAから数式を入力しても文字列になってしまう

上述のとおり、
  ActiveCell.Formula = "=A1+B1"
と正しい代入文になっているにも関わらず、「=A1+B1」が文字列として入力されてしまうケースもあります。

数式を入力する代入ステートメントが実行される前に、対象セルの表示形式が文字列に設定されている場合です。

セルの書式設定-表示形式-文字列

これを回避するには、数式の入力だけでなく、表示形式の設定もVBAから行う必要があります。
Sub 表示形式を標準に設定後に数式を入力する()
 ActiveCell.NumberFormatLocal = "G/標準"
 ActiveCell.Formula = "=A1+B1"
End Sub

RangeオブジェクトのNumberFormatLocalプロパティを使って、表示形式を「G/標準」など適切に設定してから数式を入力しましょう。

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » セル数式 » VBAで数式が文字列になってしまう

「セル数式」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.