すぐに役立つエクセルVBAマクロ集 すぐマク
すぐに役立つ Excel VBA マクロ集 Excel VBA Macro
FAQ
Google
 
Home |  What's New! |  Gallery |  Introduction |  Service |  Profile 500連発・組み方講座フォロー Big Color Pallet
[広告]
Excel VBA Macro
Excel DownLoad
© 1997 - 2008
永井善王.
All RightsReserved.
HappyTech & Co., Ltd.
www.happy500z.com
Excel VBA Macro ・ 値の操作 ・ FAQ
苗字の字数に応じてスペースをはさむには?
Question 49.3 Excel VBA Borad (掲示板)より Previous Next
ようやく 「For〜Next」 「If〜Then〜Else」が理解できたところの、マクロ超初心者です。

セルの文字が2文字なら、間に半角スペースを3個 (田中→田___中)、
セルの文字が3文字なら、間に半角スペースをそれぞれに1個ずつ入れる (田井中→田_井_中)

という具合にする方法はないでしょうか?
Answer   2001.10.3 long
文字列の連結は、Excel VBA BoardのページのNo.117「メッセージに変数を入れて表示させたい」にもありますが、連結演算子( & )を使います。
"田" & "___" & "中"、または、"田" & "_" & "井" & "_" & "中" のように書きます。

超初心者さんということなので。
ワークシートのA列の1行目から2行目に苗字が入っているとして、B列にスペースを入れた文字列を作る場合のマクロを、「For〜Next」 「If〜Then〜Else」を使って作成してみます。 ワークシート
Sub 苗字の字数に応じてスペースをはさむ()
For 行 = 1 To 2
苗字 = Cells(行, 1)
字数 = Len(苗字)
If 字数 = 2 Then Cells(行, 2) = Left(苗字, 1) & "___" & Right(苗字, 1)
If 字数 = 3 Then Cells(行, 2) = Left(苗字, 1) & "_" & Mid(苗字, 2, 1) & "_" & Right(苗字, 1)
Next
End Sub
上例の「If〜Then〜Else」は単一行形式で書きましたが、通常よく見かけるブロック形式で書いた方が見やすいかも知れません。当然、_ はスペースに置き換えです。
ありがとうございました
longさん、早速詳しく教えて下さり、感謝感激です。 文字列の連結は知っていたのですが、
   苗字 = Cells(行, 1)
   字数 = Len(苗字)
このあたりの命令(?)が、わかりませんでした。 それと、
   苗字の左の文字の取り方… Left(苗字, 1)、
   真ん中の文字の取り方…   Mid(苗字, 2, 1)、
   右の文字の取り方…     Right(苗字, 1) もわかりませんでした。

非常に勉強になりました。本当にありがとうございました。