【VBA】表示形式を「文字列」にして、セルに値を設定する

例えば
 ・Range(“B2”) = “2-3
とすると、セルには
 ・2月3日
日付形式で設定されてしまいます。

セルに"2-3"を設定しようとすると…
セルに”2-3″を設定しようとすると…
日付形式で設定されてしまう...
日付形式で設定されてしまう…

例えば「2-3」を文字列として設定したい場合は、
「NumberFormatLocal」を使用します。
※NumberFormatでも同様のことが可能です。
※ここでは私の好みでNumberFormatLocalを使用します。

PR

VBAコード

ここでは例として、シート「sample」上の
 ・セル「B2」に
 ・文字列として「2-3」を
設定します。

Sub sample()
    With Worksheets("sample").Range("B2")
        '表示形式を「文字列」にする
        .NumberFormatLocal = "@"
        '値を設定
        .Value = "2-3"
    End With
End Sub

「Rangeオブジェクト」の「NumberFormatLocal」プロパティに、「@」を設定します(4行目)。

PR

実行結果

文字列として値を設定できました。

文字列として設定できた
文字列として設定できた


セルの書式設定を確認すると、表示形式が「文字列」になっていることを確認できます。

表示形式は「文字列」となっている
表示形式は「文字列」となっている
PR

参考

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

●「Rangeオブジェクト」の「NumberFormatLocal」プロパティ

PR

備考(「NumberFormatLocal」と「NumberFormat」の違い)

値の設定方法に多少の違いがあるだけです。

例えば 表示形式に「標準」を指定する場合
  • NumberFormat・・・・・・「General」を指定
  • NumberFormatLocal・・・・「G/標準」を指定

どちらかが優れている/劣っているというモノではありません。
よってどちらを使用するかは好みで良いと考えます。

私はNumberFormatLocalの方が
 ・可読性が良い
と考えているため、こちらを使用しています。

例えば表示形式に「標準」を指定する場合、
 ・「General」と指定するよりも
 ・「G/標準」と指定した方が
「標準」を指定した旨が直感的に分かりやすいと考えているためです。

タイトルとURLをコピーしました