pickup

目次

セルが更新されたらイベントが発生

こんにちは。伊川(@naonaoke)です。



以前、上の記事で、どこかのセルをクリックしたら、イベントが発生するということを紹介しました。

今回は、特定のセルが更新されたら、イベントが発生するということを紹介したいと思います。

ACCESSなら、更新後処理という簡単な処理があるのですが、Excelは少し面倒ですかね。

問題提起

(株)IKAWAの柄久 瀬瑠子(エク セルコ)は、毎朝、データをシートに追加するたびに、A列に連番を振らなければなりません。別に、10秒くらいのことですが、毎日のことなので面倒です。なにか良い方法はないでしょうか?

解決策

回答
sesuko2.jpg
・Worksheet_Change(ByVal Target As Range)
・セルが更新されたら、イベントを発生させるというVBAで解決します。

セルA2が更新されたら、伊川直助が入力される

上の図に、セルA2に何か文字が入力されたら、伊川直助が入力されるというコードを紹介します。


セルA2に【a】と入力しました。

そうすると、伊川直助が入力されました。

 

Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Intersect(Target, Range("A2")) Is Nothing) Then

Dim i As Long
For i = 1 To 10
Cells(i, i) = "伊川直助"
Next i
End If

End Sub

この引数Targetは、イベントが発生したときに選択されているセルを、プロシージャに渡すのです。

特定のセルに特定の文字が入力されたら、イベントが発生する



上の図のように、セルB2に、赤が入力されたら、とまれを表示します。

同じく、セルB2に青が入力されたら、すすめを表示します。

それ以外の文字なら、何もしません。


上の図のようになります。

上の図は、赤を実行した場合になります。

青は割愛します。

 

Private Sub Worksheet_Change(ByVal Target As Range)


If Not (Intersect(Target, Range("B2")) Is Nothing) Then

If Target.Value = "赤" Then
Range("I2") = "とまれ"
ElseIf Target.Value = "青" Then
Range("I2") = "すすめ"

End If

End If
End Sub

スポンサーリンク

B列に文字が入力されたら、A列に連番が振られる


上の図のように、B列に文字が入力されたら、A列に連番を振ります。


上の図のようになります。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim i As Long
   i = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
  If Cells(i, 2) <> "" Then
       Cells(i, 1) = i - 1

   End If

End Sub
スポンサーリンク

まとめ

ここがポイント
Function8.png
このような処理を、みなさんのスキルにできれば、処理は早くなり、残業もなくなるでしょう。
VBAを勉強している人は、フォルダを作成して、失敗したファイルを保存しておきましょう。
その失敗には、未来が詰まっています。完成したファイルより、意味があります。ある日、突然、ひらめいて、失敗していたコードが突然、動き出すことがあります。その失敗したファイルがなくなったとき、あなたは、きっと覚醒しています。

 

サンプルファイルはNo28です。
スポンサーリンク

Twitterでフォローしよう

おすすめの記事