小池イーサンだお(^O^)/

読んでーーーー

文字列をある文字数ごとに区切るマクロ

業務で使う用にマクロを作る。

やりたいこと

N文字のコード値がズラズラっと並んだレコードをN文字ごとに区切りたい。
具体的には「aaaaaabbbbbcccccc」を「aaaaaa;bbbbbb;cccccc」みたいにしたい。
レコードは固定長で送られてきて、末尾はスペースで埋まっているので、
末尾のスペースは取り除きたい。

書いてみよう

インクリメントはi++もi+=1もだめらしい。
例外処理をどうするのかわからなかった。
配列のremove(削除したら前に詰めるやつ)はないらしい

低能コボラーだからクソコードしか書けないのつらい。
(自分で使うだけだから動けばいいって言い訳してる)

Sub N文字ごとに区切る()

    '''''定数
    '区切りたい文字数
    Const N As Long = 6
    '区切り文字
    Const D As String = ";"
    
    '''''変数
    Dim cell As Range
    Dim tmp As String
    Dim i As Long
    Dim err As Long: err = 0
    
    For Each cell In Selection.Cells
    
        cell = RTrim(cell)

        If (Len(cell) Mod N <> 0) Then
            err = err + 1
            GoTo Continue
        End If

        tmp = ""

        For i = N To Len(cell) Step N
            tmp = tmp & D & Mid(cell, i - (N - 1), N)
        Next i

        cell.Value = Mid(tmp, Len(D) + 1, Len(tmp))

Continue:
    Next cell
    
    MsgBox N & "文字ごとに" & D & "で区切りました" & vbLf _
            & "例外セル数:" & err
    
End Sub