VBA・・・ダブルクリックで使い分け

ミール

2012年12月15日 13:15

エクセルでセルをダブルクリックするとシートが変わったり、日付が編集されたり
チェックマークがついたりと手早く処理ができたらいいなぁと思った事ありませんか。

今日は下図の様なシートで日付のセルをダブルクリックすると今日の日付を編集し、
名前のセルをダブルクリックすると印刷シートに移動する使い分けの方法を考えて
みたいと思います。


支払日のセルをダブルクリックすると今日の日付を編集する。
シート名:請求一覧



名前のセルをダブルクリックすると印刷画面へ移動する。
シート名:印刷画面



シート上でダブルクリックをすると自動的に動く命令があります。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

この命令を、VBAの対応するシートに記述します。


今回の場合は、
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

行 = Target.Row
列 = Target.Column

If 列 = 3 Then
Sheets("請求一覧").Range("c" & 行) = Date
Cancel = True

ElseIf 列 = 4 Then

Sheets("印刷画面").Range("c5") = Sheets("請求一覧").Range("d" & 行)
Sheets("印刷画面").Range("c31") = Sheets("請求一覧").Range("e" & 行)
Sheets("印刷画面").Range("c32") = Sheets("請求一覧").Range("f" & 行)
Sheets("印刷画面").Select
End If

End Sub

なプログラムで目的の動きはするはずです。

行 = Target.Row
列 = Target.Column

は、ダブルクリックされたセルの位置が取得できます。

支払日をダブルクリックするとC列ですので、3番目という事になります。
"列"という変数には3の数字が入ってきます。

なので、プログラムでは、
If 列 = 3 Then
Sheets("請求一覧").Range("c" & 行) = Date
          ・
          ・
          ・
という条件分岐となります。

名前のセルでも同様、D列ですので4番目という事になります。

ElseIf 列 = 4 Then
Sheets("印刷画面").Range("c5") = Sheets("請求一覧").Range("d" & 行)
          ・
          ・
          ・
という、条件文になると思います。

それ以外は、セルがアクティブになります。

ダブルクリックで使い分け。使い勝手のいい命令です。


関連記事