Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


543 / 9994 ←次へ | 前へ→

【12762】OnMouseDownでShiftを取得するには?
質問  キンパレ  - 15/3/25(水) 0:39 -

引用なし
パスワード
   初めて投稿します。
至らぬ点があればご指摘ください。
よろしくお願い致します。

【質問】
フォーム上にラベルT1〜T30があったとします。
ラベルをクリックすることでキャプションをメッセージボックスで表示
するようにする場合、

Private Sub T1_Click()
  
  MsgBox Me.T1.Caption
  
End Sub

というプロシージャをT1〜T30まで個別に記述したのでは大変ですから、

Private Sub Form_Open(Cancel As Integer)

  For i = 1 To 30
    Me("T" & i).OnClick = "=msg(" & i & ")"
  Next i

End Sub

Private Function msg(n As Integer)

  MsgBox Me("T" & n).Caption

End Function

このようにフォームオープン時に一括設定にできますよね。

これをClickイベントではなくMouseDownイベントで引数を取得したい場合は
どのように記述すれば良いのでしょうか。
たとえばShiftを押しながら右クリックした場合にMsgBoxを出すようにします。
個別に記述すると下記のようになります。

Private Sub T1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

  If Shift = 2 Then
    MsgBox Me.T1.Caption
  End If
  
End Sub

これを前述のOnClickのように纏めて設定するようにしたいのですが、
引数の部分をどのように記述すれば良いかがわかりませんでした。
引数なしで書くと下記のような感じです。

Private Sub Form_Open(Cancel As Integer)

  For i = 1 To 30
    Me("T" & i).OnMouseDown = "=msg(" & i & ")"
  Next i

End Sub

色々と検索してみたのですが、調べ方が悪いのかどうしても
該当する情報に辿りつけませんでした。
ご教示いただければ幸いです。
どうぞ宜しくお願いいたします。
174 hits

【12762】OnMouseDownでShiftを取得するには? キンパレ 15/3/25(水) 0:39 質問[未読]
【12765】Re:OnMouseDownでShiftを取得するには? hatena 15/3/25(水) 2:37 回答[未読]
【12776】Re:OnMouseDownでShiftを取得するには? キンパレ 15/3/25(水) 23:35 お礼[未読]

543 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078190
(SS)C-BOARD v3.8 is Free