「数式が文字列になる マクロ activecell.formula =」
という検索キーワードをキッカケにして、数式を文字列にするExcelマクロをご紹介しました。
「数式が文字列になる マクロ activecell.formula =」
という検索は、まったく別のことを探していた可能性も考えられます。
RangeオブジェクトのFormulaプロパティを使って、数式を入力したつもりなのに、
文字列になってしまったという可能性です。
数式が文字列になってしまう理由
理由・原因は大きく2つ考えられそうです。
一つは、数式を入力したつもりが実は数式になっていなかったケース。
もう一つは、セルの表示形式が文字列だったケースです。
数式を入力したつもりが数式になっていなかったサンプル
例えば「=A1+B1」という数式を入力するつもりで、以下のような代入文にしていた場合は、もちろん文字列になってしまいます。本当は、
ActiveCell.Formula = "=A1+B1"
としなければならないにも関わらず、直前に代入演算子の「=」があるために、
ActiveCell.Formula = "A1+B1"
セル内数式の先頭に必要な「=」が抜けていることに、気付けないというケースです。
正しく、
表示形式が文字列の場合VBAから数式を入力しても文字列になってしまう
上述のとおり、
ActiveCell.Formula = "=A1+B1"
と正しい代入文になっているにも関わらず、「=A1+B1」が文字列として入力されてしまうケースもあります。
数式を入力する代入ステートメントが実行される前に、対象セルの表示形式が文字列に設定されている場合です。
これを回避するには、数式の入力だけでなく、表示形式の設定もVBAから行う必要があります。ActiveCell.NumberFormatLocal = "G/標準"
ActiveCell.Formula = "=A1+B1"
End Sub
RangeオブジェクトのNumberFormatLocalプロパティを使って、表示形式を「G/標準」など適切に設定してから数式を入力しましょう。
Home » Excel VBA Rangeオブジェクト » セル数式 » VBAで数式が文字列になってしまう