1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VBAで、「1-1」などの文字列をセルに代入しようとすると、日付として認識されてしまう件を解決

Last updated at Posted at 2023-07-24

結論

代入するセルに.NumberFormat = "@"の処理をいれます。これでセルの書式を文字列に設定してから代入することで日付と認識されずにセルに代入できます。

実際に起きたことを再現

エクセルVBAを使用して、エクセルのセルに「1-1」という文字列を代入したいとします。下記のようなコードを記述しました。

Sub 検証()
    ThisWorkbook.Worksheets(1).Cells(1, 1).Value = "1-1"
End Sub

上記のコードで実行すると、代入したセルには「1月1日」と表示されてしまいました。式も「2023/1/1」となり、日付として認識されています。
「1-1」を代入することができないか、調査しました。

調査

下記の記事が参考になりました。

「1-1」のような文字列は、エクセルが自動で日付として認識します。それゆえ、エクセルの表示も変わってしまうというものでした。NumberFormatに文字列を意味する「@」を設定することで文字列として認識させることができるようです。

調査を踏まえての対策

NumberFormatに「@」を設定してから「1-1」を代入します。

Sub 検証()
    ThisWorkbook.Worksheets(1).Cells(1, 1).NumberFormat = "@"
    ThisWorkbook.Worksheets(1).Cells(1, 1).Value = "1-1"
End Sub

これで、エクセルでも文字式として認識され、「1-1」と表示されます。

以上です。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?