Q.前回、ポップアップでメッセージを表示する方法を見ていて、メッセージを改行するときに vbcr を使えば良いことが分かりました。それで文字列という考え方を知り、シート上で入力した値を文字列として、いろいろ操作できることがわかりました。すぐ使えそうな、代表的な文字列の操作方法について、教えていただけませんか。
A.わかりました。文字列操作は、とにかくたくさんありますので、順を追ってひとつひとつ説明いたしましょう。
さっそくコードを見ながら見ていきましょう。まずは、文字列のサイズ(長さ、文字数)を知る関数からです。
A1セルの文字数を知るには、下記のように書きます。(今回はプロシージャ名などは省略しますね)
Dim l As Integer
l = Len(Cells(1,1).Value)
さて、どうして文字列の文字数など知りたいのだろう?と思われた方もいらっしゃるかも知れません。
これに対する答えは、文字を操作しようとして場合に、何文字目から何文字目、とか、後ろ何文字残して、とかを指定する際に、
全体の文字数を知らないと面倒なことが多いためです。後で分かってくると思います。
次は、文字の先頭何文字を取る、というようなときに使う、Left関数です(文字の先頭は左ですよね)。以下は以前学んだ MsgBox を使ってポップアップで表示させています。
MsgBox("A1セルの前3文字は" & Left(Cells(1,1).Value,3))
さらに、文字の末尾何文字を取る、というようなときに使う、Right関数です(Leftの逆)。
MsgBox("A1セルの前3文字は" & Right(Cells(1,1).Value,3))
先頭(左)と末尾(右)ときたら、中間(真ん中)ですよね。下記のようにします。
MsgBox("A1セルの前2文字目から4文字目までは" & Mid(Cells(1,1).Value,2,4))
さて応用編。入力されているデータが全て会社の場合、最後に「株式会社」「有限会社」「合同会社」が入っているとしましょう。
そのデータに対して、「会社」をなくした文字を取得するためにはどうしたら用でしょうか?
ここで最初に挙げた文字数を知る「Len」が登場します。会社名の文字数はそれぞればらばらなので、先頭(左)から最後から2文字前まで、という指定をするためには、長さを知る必要がありますよね。下記のようにします。(A1セルに会社名「マクロ株式会社」などが入っているとします)
MsgBox("「会社」を除くと" & Left(Len(Cells(1,1).Value)-2))
コードを見るだけでなく、実際に入力して実行結果を確認してみて下さいね。