7/07/2022

Excel。VBA。ハイフンの枝付きデータを入力したら日付になるので、文字のままにしたい【character】

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で処理した時と同じように、表示形式も考える必要があります。