- 締切済み
エクセルのマクロについて質問、次のマクロが欲しいです。「選択した範囲のセルに左から○○番目に半角スペースを挿入」
エクセルのマクロについて質問、次のマクロが欲しいです (1)選択した範囲のセルに左から○○番目に半角スペースを挿入。 例:○○を1とした場合 1234 5678 9101 1235 5679 9102 1236 5680 9103 ↓ 1■234 5■678 9■101 1■235 5■679 9■102 1■236 5■680 9■103 *■はスペースのつもりです (2)選択した範囲のセルに右から○○番目に半角スペースを挿入。 例:○○を1とした場合 1234 5678 9101 1235 5679 9102 1236 5680 9103 ↓ 123■4 567■8 910■1 123■5 567■9 910■2 123■6 568■0 910■3 (3)選択セルの1番右の文字を上付き文字。 例: 1234 1235 1236 ↓ 1234←4を上付き 1235←5を上付き 1236←6を上付き 「選択した範囲のセル中にスペースやタブがあれば全部削除」 といった似たようなマクロを発見したのですが。これを利用してできないでしょうか? Sub 空白除去() Dim rng As Range Dim str as String For Each rng In Selection ' --- タブを除去 str = Replace(rng.Value, vbTab, "") ' --- 半角スペースを除去 str = Replace(str , " ", "") ' --- 全角スペースを除去 rng.Value = Replace(str , " ", "") Next End Sub お力添えよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
以下の正規表現DLL「REGEXP.DLL」を組み込めば、 http://www.hi-ho.ne.jp/babaq/bregexp.html (1) ret = Replace("s/^(?)/$1\s/", szTarget) (2) ret = Replace("s/(?)$/\s$1/", szTarget)
- imogasi
- ベストアンサー率27% (4737/17069)
>次のマクロが欲しいです 例を探そうとしたようだが、丸投げ的。望ましく無い。 例のようなのでなく、下記をヒントとして例示。 他にも色々処理方法はありえる。 セルの文字列に、位置(何文字目)を指定して、文字を挿入というVBAの関数は無いはず。関数を作れば出来るが。 例データ A列 1234 5678 9101 1235 5679 9102 1236 5680 9103 結果 B列 1 234 5 678 9 101 1 235 5 679 9 102 1 236 5 680 9 103 コードは標準モジュールに Sub test01() For i = 1 To 3 s = Split(Cells(i, "A"), " ") t = "" For j = 0 To UBound(s) t = t & Mid(s(j), 1, 1) & " " & Mid(s(j), 2, Len(s(j)) - 1) t = t & " " Next j Cells(i, "B") = RTrim(t) Next i End Sub (2)は各ブロックの文字長-1の位置にスペースを入れればよい (Len(文字列)-1の文字列) & " " & (Len(文字列)番目の1バイト。 そのブロック数だけの繰り返し。 (3)はマクロの弥勒でコードがわかる。右端はMid関数の Len(文字数)番目で捉えられる。