ダブルクリックで指定の文字を入力する

ある決められたセル範囲内には特定の文字しか入力しない場合、例えば「晴れ、曇り、雨」や「○、△、×」などですが、これらをそのつど入力するのに手間を感じる場合はマクロを記述していればいいでしょう。

特定のワークシートでのみ動作させる場合は、そのワークシートモジュール内に以下のプロシージャを記述します。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

すべてのワークシートで動作させる場合は、ワークブックモジュール内に以下のプロシージャを記述します。

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

これらのプロシージャはVisual Basic Editorのコードウィンドウ上部のドロップダウンリストボックス内から選択すれば自動で記述されます。

A列に「○、△、×」をダブルクリックで入力する場合(ワークシートモジュール)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column = 1 Then
    Select Case Target.Value
      Case ""
        Target.Value = "○"
      Case "○"
        Target.Value = "△"
      Case "△"
        Target.Value = "×"
      Case Else
        Target.ClearContents
    End Select
    Cancel = True
  End If
End Sub

上のプロシージャが記述されたワークシートのA列をダブルクリックすると、「○ → △ → × → 空白 → ○」の順に変わります。○、△、×以外の文字が入力されていると削除されます。

さらに条件を加えて1行目と2行目をダブルクリックしても動作せず、3行目以降ならば実行されるようにしてみましょう。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target.Column = 1 And Target.Row > 2 Then
    Select Case Target.Value
      Case ""
        Target.Value = "○"
      Case "○"
        Target.Value = "△"
      Case "△"
        Target.Value = "×"
      Case Else
        Target.ClearContents
    End Select
    Cancel = True
  End If
End Sub