エクセル実践塾 > エクセル実践塾2007

マクロを右クリックで実行したい

 

 

 

 

 

 

Worksheet_BeforeRightClickイベントのプロシージャにマクロを記述すると、指定シートを右クリックしたときにそのマクロが実行されます

Worksheet_BeforeRightClickイベントは、シートごとに用意されているプロシージャです。そこに記述したコードは、そのシートを右クリックしたときに実行されます。

@マクロの対象となるシートをダブルクリックして、そのシートのコードウィンドウで、Worksheet_BeforeRightClickイベントのプロシージャを追加します。

たとえば、前号のような「利用者」シートで実行するマクロなら、「利用者」シートをダブルクリックして、Worksheet_BeforeRightClickイベントのプロシージャを追加します。

Worksheet_BeforeRightClickイベントのプロシージャは、コードウィンドウ上部で「Worksheet」と「BeforeRightClick」を選ぶことで追加できます。

AWorksheet_BeforeRightClickイベントでは、変数「Target」が右クリックしたセルを表します。

アクティブセルに対して処理するマクロの場合には、「ActiveCell」を「Target」に置き換えると、右クリックしたセルが処理の対象となります。

「Cancel = True」のコードは、通常の右クリック時に表示されるショートカットメニューをキャンセルするものです。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
  Dim r As Byte
  r = Target.Row
  Cancel = True

  With Sheets("申請書")
    .Range("F5").Value = Cells(r, 1).Value
    .Range("F4").Value = Cells(r, 2).Value
    .Range("F6").Value = Cells(r, 3).Value
    .Range("F7").Value = Cells(r, 4).Value
    .Range("G8").Value = Cells(r, 5).Value
    .Range("B12").Value = Cells(r, 6).Value
    .Range("C13").Value = Cells(r, 7).Value
    .Range("C14").Value = Cells(r, 8).Value
    .Range("G13").Value = Cells(r, 9).Value
    .Range("B16").Value = Cells(r, 10).Value
    .Activate
    .Range("B13").Select
  End With
End Sub

B処理したい行のセルを右クリックすると、Worksheet_BeforeRightClickイベントに記述したマクロが実行されます。

C申請書の必要な箇所が書き換わります。