Microsoft Access 掲示板

Excelのセル内にTABを入れる / 5

9 コメント
views
4 フォロー
5

タブをスペースに変換する関数を作成してみました。

Public Function Tab2Spaces(s As String, n As Long)
    Dim lines: lines = Split(s, vbLf)
    Dim l
    For Each l In lines
        Dim a: a = Split(l, vbTab)
        Tab2Spaces = RTrim(Tab2Spaces) & vbLf
        Dim i
        For Each i In a
            Tab2Spaces = Tab2Spaces & Format(i, "!" & String(n, "@"))
        Next
    Next
    Tab2Spaces = Mid(Tab2Spaces, 2)
End Function

上記のコードを標準モジュールにコピーしてください。

A1セルにタブと改行を含むテキストを貼り付けます。その後、下記のコードを実行します。

Public Sub test()
   Range("A2") = Tab2Spaces(Range("A1"), 8)
End Sub

実行後のシート↓

画像1

通報 ...
  • 8

    フォントは等幅フォントにしてください。
    半角文字が前提です。全角文字が含まれるとずれます。
    第2引数で指定した数字より長い単語があるとずれまず。

    9
    hatena 2022/07/29 (金) 20:59:08 修正 >> 8

    全角文字が含まれていても揃うように修正しました。

    Public Function Tab2Spaces(s As String, n As Long)
        Dim lines: lines = Split(s, vbLf)
        Dim l
        For Each l In lines
            Dim a: a = Split(l, vbTab)
            Tab2Spaces = RTrim(Tab2Spaces) & vbLf
            Dim i
            For Each i In a
                Dim num As Long
                num = n - LenB(StrConv(i, vbFromUnicode))
                If num < 0 Then num = 0
                Tab2Spaces = Tab2Spaces & i & Space(num)
            Next
        Next
        Tab2Spaces = Mid(Tab2Spaces, 2)
    End Function
    

    画像1