「vbaでセルにtext関数をいれる」
「excel vba 数式 マクロ text関数 表示形式 formula」
といった検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがありました。
Excel VBA(Visual Basic for Applications)から、セルにTEXT関数を入力するには、どうすればいいのかを探していた方による検索です。
TEXT関数では第2引数に、
どのような表示形式にするかを、「"」(ダブルクォーテーション・ダブルクォート)で括って指定します。
この第2引数・表示形式を、VBAのコードから、どうやって指定すればいいのかがわからなかったのだろうと推測しています。
「excel マクロ text関数= "=text(g3," & aaa & ")"をマクロで入力する方法 ダブルクォーテーションを入れたい」
という検索キーワードからは、試行錯誤してらっしゃる様子が、リアルに読み取れます。
VBAからダブルクォーテーションを入力する方法
このダブルクォーテーションの問題は、TEXT関数に限った話ではありません。
VBAから「"」を入力する場合に、多くの方がつまずくポイントです。
どうすればいいかというと、ダブルクォーテーションを2つ書きます。
VBAのコードの中でダブルクォーテーションを、「""」のように2個並べておくと、実際には文字列としてのダブルクォーテーション「"」1個が入力されます。
TEXT関数を入力するサンプルマクロ
TEXT関数を入力する具体例をご紹介しておきましょう。Range("B1").Formula = "=TEXT(A1, ""yyyymmdd"")"
End Sub
上記のSubプロシージャを実行すると、アクティブなシートのB1セルに
=TEXT(A1, "yyyymmdd")
という数式が入力されます。
代入演算子としての「=」と、
Range("B1").Formula = "=TEXT(A1, ""yyyymmdd"")"
数式の先頭に入力する文字列としての「=」が存在するのと、
Range("B1").Formula = "=TEXT(A1, ""yyyymmdd"")"
ダブルクォーテーションがいくつか並んでいるので、
Range("B1").Formula = "=TEXT(A1, ""yyyymmdd"")"
VBAのコードを見慣れない方は、どれが何のダブルクォーテーションなのか、見分け辛いかもしれません。
まず、数式の入力を行っている代入文の、
Range("B1").Formula = "=TEXT(A1, ""yyyymmdd"")"
右辺全体を括っている「"」は、
Range("B1").Formula = "=TEXT(A1, ""yyyymmdd"")"
通常の文字列を括る「"」です。
例えば、B1セルに「イロハ」という文字列を入力するなら、
Range("B1").Value = "イロハ"
と書きます。この「"」と同じです。
この記事のポイントである「"」は、このプロシージャを実行すると入力される、TEXT関数の第2引数に指定する「yyyymmdd」を括っている、
Range("B1").Formula = "=TEXT(A1, ""yyyymmdd"")"
です。
これが「""」とダブルクォーテーション2個です。
- Newer:条件付き書式の背景色を取得するExcelマクロ
- Older:条件付き書式が設定されているかをVBAで調べる
Home » Excel VBA Rangeオブジェクト » セル数式 » VBAからTEXT関数を入力する