VBAでセルを選択したときにそのセルに文字を入力する

提出物のチェックをしたい時など、セルを選択したときに〇などの文字を自動で入力されるように、SelectionChangeのイベントプロシージャを使ったサンプルです。

下図のようにSheet1にA列に氏名、B列にチェック入力の表を作ります。

チェック表

 

Sheet1のシートモジュールにプロシージャを書きます。

シートモジュール

 

動作する条件は

1.選択されたセルがB列で、その行のA列が空白ではない

2.選択されたセルの値が空白の時は〇を入力し、〇が入力されている時は空白にする

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   '選択されたセルの値用の変数
   Dim str As String
   '選択されたセルの行数と列数の変数
   Dim row As Integer, col As Integer
 
   '選択されたセルの行数と列数を変数に代入
   row = Target.row
   col = Target.Column
 
   '選択されたセルの列がB列で、同じ行のA列が空白ではない場合に動作
   If col = 2 And Cells(row, 1).Value <> "" Then
       '選択されたセルの値を変数に代入
       str = Target.Value
 
       'str変数の値が何もない場合は〇を選択されたセルに入力し、〇の場合は空白にする
       If str = "" Then
           Target.Value = "○"
       ElseIf str = "○" Then
           Target.Value = ""
       End If
   End If
End Sub

 

これで、B列のセルがフォーカスされると〇が入ったり、空白になったりします。

 

【追記:2019-12-2】

上の例では、選択されたセルの行番号、列番号を取得して「2列目だったら・・・」という条件にしています。

これをApplicationオブジェクトのIntersectメソッドを使った条件にしてみます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '選択されたセルの値用の変数
    Dim str As String

    '選択されたセルの列がB列内で、同じ行のA列が空白ではない場合に動作
    If Not Application.Intersect(Target, Columns(2)) Is Nothing And _
    Cells(Target.row, 1).Value <> "" Then
        '選択されたセルの値を変数に代入
        str = Target.Value

        'str変数の値が何もない場合は〇を選択されたセルに入力し、〇の場合は空白にする
        If str = "" Then
            Target.Value = "○"
        ElseIf str = "○" Then
            Target.Value = ""
        End If
    End If
End Sub

こちらの方が少しコードが少なくなります。

 

SelectionChangeの記事はこちら
Excel VBA セルを選択後に処理をしたい-SelectionChange

Intersectの記事はこちら
Excel VBA 2つ以上の範囲の交差するセルを探す-Intersect

 

< スポンサーリンク >



サブコンテンツ

このページの先頭へ