Excel。VBA。ハイフンの枝付きデータを入力したら日付になるので、文字のままにしたい
<NumberFormatプロパティ>
「2-1」のようなハイフンの枝付きデータを連番で設定したいとします。
手入力ではとても面倒なので、Excel VBAでプログラム文をつくったほうが楽だと考えました。
そこで、次のようなプログラム文をつくってみました。
Sub 日付ではなく文字()
Dim i As Integer
For i = 2 To 6
Cells(i, "a").Value = "2-" & i - 1
Next
End Sub
For~Next文で、繰り返し処理をしています。
「Cells(i, "a").Value = "2-" & i - 1」は、A2に、「2-1」という文字を入力する
という処理ですね。
ところが、実行してみると、おかしな表示になります。
なんと、日付で表示されています。
原因は、「2-1」と入力すると「2/1」と同じように、Excelは自動的に日付が入力されてきたと判断して、日付型の「月日」という表示形式に変わってしまったわけです。
ただ、今回は、「2-1」という文字で表示したいわけですね。
そこで、文字型の表示形式を先に設定しておけば、日付で表示されることはありません。
では、次のように、プログラム文を修正していきます。
Sub 日付ではなく文字()
Dim i As Integer
For i = 2 To 6
Cells(i, "a").NumberFormat = "@"
Cells(i, "a").Value = "2-" & i - 1
Next
End Sub
先ほどのプログラム文に
「Cells(i, "a").NumberFormat = "@"」を追加しました。
NumberFormat = "@" とNumberFormatプロパティをつかうことで、文字型にすることができます。
では、改めて実行して確認してみましょう。
希望通り「2-1」という文字で入力することができました。
Excelは、VBAで処理をしたとしても、Excelで処理した時と同じように、表示形式も考える必要があります。