実務でExcelのデータを別のシステムに渡す場合には、いろいろな前処理が必要になります。
複数のセルの先頭に、同じ文字列を追加したいというのも、よく必要とされる処理の一つでしょう。
私が最近扱っているExcelファイルでもそんな処理が必要となり、VBA(Visual Basic for Applications)でマクロを作ってみました。
Sub 先頭に文字列を追加する()
Dim c As Range
Dim str_add As String
str_add = InputBox("先頭に追加したい文字列を入力してください。")
If Len(str_add) = 0 Then Exit Sub
For Each c In Selection
If Len(c.Value) > 0 Then c.Value = str_add & c.Text
Next
先頭に文字列を追加したいセルを選択しておいて上記のマクロを実行すると、追加したい文字列を指定するダイアログボックスが表示され
InputBox("先頭に追加したい文字列を入力してください。")
その指定された文字列を変数
str_add = InputBox("...
に格納します。
ダイアログで何も入力されなければ、マクロを終了します。
If Len(str_add) = 0 Then Exit Sub
ダイアログで何か入力されていれば、選択されているセルをループで処理していきます。
For Each c In Selection ... Next
もしセルの中に何らかのデータが入力されていれば
Len(c.Value) > 0
先のダイアログで指定された文字列を先頭に付加していきます。
c.Value = str_add & c.Text
特に難しい部分はないマクロですが文字列を追加する
「c.Value = str_add & c.Text」の部分は
「c.Value = str_add & c.Value」と
する方もいらっしゃるかもしれません。
先頭に文字列を付加したい、元のセルに入力されているデータが単純な文字列ならばValueプロパティでいいのですが、例えば、日付や時間データの入力されたセルで、Valueプロパティを使うと、ユーザーが望まない結果となってしまうはずですので、私はTextプロパティを利用しています。
Valueプロパティを使ったときにどんな結果になるかは、Excelの日付や時間はシリアル値と呼ばれる数値だということをご存知の方ならば、すぐにわかるでしょう。
Home » エクセルマクロ・Excel VBAの使い方 » マクロのサンプル » 同じ文字列を追加するExcelマクロ