タイトルのテキスト
タイトルのテキスト
タイトルのテキスト
タイトルのテキスト

Excelの表で選択しているセルの色が自動で変わるプログラム【間違い防止】

VBA

t f B! P L

 Excelの表で選択しているセルの色が自動で変わるプログラム【間違い防止】

Excelの表に入力していくときに、現在選択しているセルの色が変わって、Excelの操作に不慣れな人でも分かりやすくするイベントプログラムを作りました。

〇やりたいこと

会社でExcelを共有して使用していると、パソコンが苦手な人が使う場合があります。

Excelを使い慣れている人なら選択しているセルは黒線で囲われるので、慣れている人なら当然のごとく分かりますが、会社にはいろいろな人がいます。

分からない人もいます。

それでも業務を回せるようにしなくてはなりません。

今回、普段は現場の方で仕事をしていて、パソコンを使わない人が体を壊してしまい、しばらく内勤の仕事をすることとなりました。

Excelにデータを入力していく仕事をしてもらうのですが、Excelじたいあまりさわったことが無い人なので、入力業務を少しでも分かりやすくするために、表の中で現在選択しているセルの色が自動でかわるプログラムをつくることになりました。

表はサンプルなので適当です。

↓こんな感じ。 

表のサンプル画像

〇作ったコード

以下のコードを標準モジュールではなく、ワークシートモジュールに入力すると表の中で選択している部分の色が変わり、表以外では変わりません。 

ワークシートモジュールに入力

VBAのコード

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Range("c4:h34").Interior.ColorIndex = 0

If (Target.Row >= 4 And Target.Row <= 34) And (Target.Column >= 2 And Target.Column <= 8) Then

ActiveCell.Interior.ColorIndex = 34

End If

End Sub

〇コードの解説

今回はワークシート内で、自動で動いてほしいのでイベントを使用しました。

ワークシートが変わるたびに起動するのでWorksheet_SelectionChangeイベントを使っています。

//プログラムのタイトルです。これでワークシートイベントを指定でています。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

//表の色をリセットするのに、表の範囲を「色なし」にしています。

Range("c4:h34").Interior.ColorIndex = 0

//表の範囲である4行目から34行目、2列目から8列目を選んだとき

If (Target.Row >= 4 And Target.Row <= 34) And (Target.Column >= 2 And Target.Column <= 8) Then

//現在のセルの色をカラーインデックス34番にせよ

ActiveCell.Interior.ColorIndex = 34

//if文終わり

End If

//プログラム終わり

End Sub

〇補足

カラーインデックスは0から56番まであり、0番は「色なし」です。

カラー番号は下記の図の通りになっています。

カラー番号の図

下のコードは上記の図のようなカラーインデックスの一覧を作ってくれるコードです。

2列目のセルに1から56番までのカラーインデックスの番号とそれに対応した色が付きます。

VBAのコード

Sub カラーインデックス()

For i = 1 To 56

Cells(i, 1).Value = i

Cells(i, 2).Interior.ColorIndex = i

Next

End Sub

また、Excelに不慣れな人が入力業務をすると、間違えて、まさかこんなところに入力する?となるかもしれません。

そんなときは、上記のコードに下のコードを付け加えると・・・

If (Target.Row < 4 Or Target.Row > 34) Or (Target.Column < 2 Or Target.Column > 8) Then

MsgBox "入力の範囲外です"

Range("c5").Select 

アラートが表示

こんな感じで、入力箇所以外のセルを選択すると、アラートが表示されて、セルC5に強制的に戻されます。

なので・・・

コードを変更すると・・・

VBAのコード

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Range("c4:h34").Interior.ColorIndex = 0

If (Target.Row >= 4 And Target.Row <= 34) And (Target.Column >= 2 And Target.Column <= 8) Then

ActiveCell.Interior.ColorIndex = 34

End If

If (Target.Row < 4 Or Target.Row > 34) Or (Target.Column < 2 Or Target.Column > 8) Then

MsgBox "入力の範囲外です"

Range("c5").Select

End If

End Sub

となります。

入力して欲しい表のセルを選択するとセルの色が変わり、それ以外のセルを選択するとアラートが表示されて、規程のセルに戻されます。

入力箇所の間違い防止になります。

〇まとめ

会社でExcelを共有で使っていると、その使用者のレベルはまちまちです。

しかし業務を進めていく以上、皆が分かりやすくすることにデメリットはありません。

そういったときは、ワークシートイベントを使うと便利です。

すこしのVBAのコードを書くだけで、入力業務の間違い防止に役立ちます。

koneka1208

koneka1208

自己紹介

自分の写真
エクセル好きの窓際会社員です。 エクセルの操作法や日々の会社で得た知見などを発信していきます。 よろしくお願いします。

ブログ アーカイブ

連絡フォーム

名前

メール *

メッセージ *

QooQ