【VBA入門】「3/5」などを日付に変換させず文字列としてセルに入力する方法|NumberFormatで制御

Excelで「3/5」と入力すると、自動的に「3月5日」などの日付に変換されてしまうことがあります。
しかし、業務においては「スラッシュ区切りのコード」や「品番」、「分数」として文字列のまま扱いたいケースも多々あります。

本記事では、Excel VBAを使用して日付に変換させずに文字列としてセルに入力する方法をご紹介いたします。


目次

VBAコード例:日付に変換させない入力方法

Sub InputAsText()
    Dim targetRange As Range
    Set targetRange = Range("D2:D3")

    ' 文字列形式(テキスト)に設定
    targetRange.NumberFormat = "@"

    ' 数値や記号を含む値を文字列として入力
    Range("D2").Value = "3/5"
    Range("D3").Value = "3-5"
End Sub

解説:なぜ日付に変換されてしまうのか?

Excelは、入力された文字列のパターンを自動的に判断して、日付や時刻として認識・変換しようとします。

  • "3/5" → 自動的に「2025年3月5日」などに変換
  • "3-5" → 自動的に「3月5日」として認識

これを防ぐには、事前にセルの表示形式を「文字列(テキスト)」に設定する必要があります。


NumberFormat = “@” とは?

NumberFormat = "@" は、セルの書式を「文字列」に設定する特別な指定方法です。
この設定を行ってから値を代入すると、Excelの自動変換機能を抑止し、そのままの見た目で入力することができます


使用シーン例

  • コード番号やID(例:「A-001/5」)を入力する場面
  • 分数やスラッシュを含む表記を扱う帳票
  • 日付形式に誤変換されることを避けたい製品データや仕様書

まとめ|「文字列として扱う」ことで意図しない変換を防ぐ

Excel VBAで「3/5」や「3-5」といったデータを文字列のまま入力したい場合は、セルの NumberFormat"@" に設定しておくことが重要です。

  • NumberFormat = "@":セルの書式を「文字列」に設定
  • .Value = "3/5":スラッシュ付きの値も変換されずにそのまま入力
  • Excelの自動変換を防ぎ、正確なデータ表現が可能に

自動的に日付に変換されてしまうことで生じるミスや混乱を防ぐためにも、意図的に書式を制御することが正確なデータ管理の第一歩となります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次