日付変換させずに文字列表示

中級VBA

日付変換させずに文字列として表示させる方法

 Excelでは、「3/5」と入力すると、「3月5日」と表示され、数式バーには「2023/3/5」などと表示されるので日付型に変換されている事がわかります。

 これを回避するためには、セルの書式設定を文字列とする必要があります。
 シート上からもメニューで変更できますがVBAで書いてみます。

文字列として3/5を表示

Sub test1()
    Range("B1").NumberFormat = "@"
    Range("B1").Value = "3/5"
End Sub

 セルの書式設定はNumberFormatプロパティで変更できます。@を指定すると文字列になります。続いて値を文字列として入力します。

 文字列なので左寄せとなり、数式バーにも 3/5 と表示されています。

分数としての3/5で表示

 分数として表示してみます。分数の書式設定の指定文字は、「# ?/?」とします。
 入力は 3 / 5 と割り算の表現でしています。

Sub test2()
    Range("B2").NumberFormat = "# ?/?"
    Range("B2").Value = 3 / 5
End Sub

 セルでは右寄せになっています。数式バーには 0.6 と表示されています。

 また、セルに分数を入力する場合には、「0 3/5」という風に入力する方法もあるそうです。
 プログラムで書くと以下のようになるでしょう。

Sub test3()
    Range("B3").Value = "0 3/5"
End Sub

 プログラムでは文字列として入力していますが、自動変換されて分数の表示となっています。

ページ数を表現する3/5

 5ページ中の3ページ目という表現で「3/5」と書くこともあるでしょう。
 この場合は、数値型の変数と文字列を組み合わせ、最終的には文字列としての表示になると思います。これは最初の例を応用した形です。

Sub test4()
    Range("B4").NumberFormat = "@"
    
    Dim total As Long
    Dim cnt As Long
    
    total = 5
    cnt = 3
    
    Range("B4").Value = cnt & "/" & total
End Sub
タイトルとURLをコピーしました