excel vbaを使ってシートの一定範囲内で特定の文字を入力直後に自動で置き換えるマクロです。背景色や文字色なども一気に変更するので、勤務表やチェックシートなどで便利です。
この記事では、エクセルVBAを使ったマクロの作り方をお伝えしていますが、実物が欲しい方はお問い合わせフォームから勤務表サンプル希望と書いていただければ、返信先アドレスに添付してお送りいたします。
文字の置き換えマクロのソースコード
VBエディタの左上プロジェクトウインドウから「Sheet1」を選んでこのコードを貼り付けてください。VBエディタの開き方については別の記事で詳しく説明しています。
Private Sub Worksheet_Change(ByVal Target As Range)
'エラー処理構文----------------------
On Error GoTo Worksheet_Change_err
'範囲指定--------------------------------------------------------
If (Target.Row >= 3 And Target.Row <= 10) _
And (Target.Column >= 2 And Target.Column <= 6) Then
'置き換え処理---------------------------------------------------
Select Case Target
Case "": '文字の入力がない場合もしくは文字を削除した場合の処理
Target.Interior.ColorIndex = 2 '背景色
Target.Font.ColorIndex = 1 '文字色
Case 1:
Target = Replace(Target, 1, "休") '文字の置き換え
Target.Interior.ColorIndex = 5 '背景色の変更
Target.Font.ColorIndex = 2 '文字色の変更
Case 2:
Target = Replace(Target, 2, "出勤")
Target.Interior.ColorIndex = 4
Target.Font.ColorIndex = 1
Case Else
Target.Interior.ColorIndex = 2
Target.Font.ColorIndex = 1
End Select
End If
'エラー処理構文---------------------------
Worksheet_Change_exit:
Exit Sub
Worksheet_Change_err:
MsgBox (Err.Number & Err.Description)
Resume Worksheet_Change_exit
'//---------------------------------------
End Sub
ソースコードの設置場所
コードを貼り付ける前に新規で開いたエクセルシートに名前をつけて保存しましょう。エクセルの拡張子にはマクロを無効化するものもあるので気をつけてください。xlsmかxlsで保存しておけばまず間違いないと思います。
コードを貼り付ける場所は、置き換え処理をする作業シートです。他の場所に貼り付けた場合は動作しませんのでご注意。画面左側のプロジェクトウィンドウで作業シートを選んでください。
ソースコードの応用
自動更新する範囲の指定
置き換え範囲を下記のように数字で指定してください。
'範囲指定--------------------------------------------------------
'置き換え範囲(列の開始と終了を指定する)
If (Target.Row >= 3 And Target.Row <= 10) _
And (Target.Column >= 2 And Target.Column <= 6) Then
' 置き換え範囲(行の開始と終了を指定する)
エクセルシートの左上を原点として列(column)は右に向かって数えて、行(row)は下に向かって数えます。
置き換える文字の変更と追加
ソースコードの赤丸部分にご注目。こんなかんじで、「1」を「休」に変更しています。
ちなみに次の行で背景色と文字色を変更しているので、修正するなら色番号を変更するだけでOK
置き換え文字の追加
「3」を有給に置き換える構文を加えてみる。
上記コードの20行目に下記構文を追加すると、エクセルシートの更新範囲内で数字の3を入力した場合「有給」に置き換割ります。
Case 3:
Target = Replace(Target, 3, "有給")
Target.Interior.ColorIndex = 7
Target.Font.ColorIndex = 2
背景や文字色の色見本
excleVBAでは色を数字で指定します。ColorIndexの色見本を下記に抜粋しました。
色番号(ColorIndex) | 色 |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 |
CodeIndexについては下記に詳しく載っています。
応用編 別バージョン「チェックリスト」
一定範囲内の文字の置き換えマクロを「勤務表」として活用しましたが、「チェックリスト」につくりかえてみました。excel vbaのソースコードはほとんど変えていないので割愛します。赤枠の範囲内が下記のように変わります。
- 合格
- 不合格
- 判定不能
コメント