VBA 数値から文字列への変換




エクセル上で=text(cells,0)で変換できるのであまり需要はないかもしれないですが、
VBAを使って数値から文字列への変換を無理矢理気味にやってみました。

選択範囲セルで動くサンプルです。

○サンプルコード[text( ,0)]
Sub format_moji1()
    
    '選択範囲のセルの書式を文字列に変更
    Selection.NumberFormatLocal = "@"
    
    'それぞれのセルで処理
    Dim x As Range
        '一文字目が0だと取れてしまうので回避
        If Left(x, 1) <> 0 Then
            '指数化してしまうものを回避
            If InStr(x, "E") = 0 Then
                'ワークシート関数で…
                x = WorksheetFunction.Text(x, 0)
            End If
        End If
    Next
    
    'ブランクのセルに”0”が表示されてしまうのでブランクに再変換
    Selection.Replace What:="0", Replacement:="", LookAt:=xlWhole
    
   

End Sub


参照・類似ページ
NumberFormatLocal
Replace



○サンプルコード[sendkeys]
Sub format_moji2()
Dim r As Long, c As Long, i As Long, j As Long

    '選択範囲のセルの書式を文字列に変更
    Selection.NumberFormatLocal = "@"

    '選択範囲の列の数
    c = Selection.Columns.Count
    '選択範囲の行の数
    r = Selection.Rows.Count
    
    For i = 1 To c '列繰り返し
        For j = 1 To r '行繰り返し
            
            '編集のためF2キー
            Application.SendKeys "{F2}"
            
            'セルの書式=文字列反映
            Application.SendKeys "{Enter}"
            
        Next j
    Next i
    
    
End Sub





参照・類似ページ
SendKeysメソッド




速度的にはWorksheetFunction.Text関数の方が断然早いっぽいです。