• 締切済み

vbaでの右クリックのチェックについて

いつもお世話になります vbaで下記のようにkeycodeをチェックして作業するプログラムを作成しています  If KeyCode=vbKeyX Then 今、右クリックを使って処理するプログラムを作りたいのですが KeyCode定数一覧表から If KeyCode=vbKeyRbutton then とプログラムを 記述しましたが認識されません KeyCode定数一覧表の備考欄には、引数 Shiftとありますが どのような意味なのか分かりません その意味と右クリックの認識の仕方を教えて頂ければ幸いです 以上、よろしくお願い申し上げます

みんなの回答

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

キーイベントを受け取れるActiveXコントロールは たいていマウスイベントを受け取ることもできて MouseDown 、 MouseUp イベントプロシージャには button 、 shift 引数があるので それを使えば判定できます。

関連するQ&A

  • アクセスVBAについて教えてください。

    アクセスVBAで KeyDown イベントに下記のプロシージャを書きました。 If KeyCode = 49 And Shift = 2 Then 都道府県 = “東京都” End If KeyCode = 49はキーボードの 「1」ということがヘルプのkeycodeの定数表より、 Vbkey1をイミディエトウィンドで調べることによりわかりました。 ?vbkey1 49 Shift = 2 はキーボードのの 「ctrl」のことみたいですが、「ALT」「shift」を指定したい場合の引数は何を入れればよいでしょうか。また、ヘルプで参照になるページがあれば教えてください。 それと vbkey の意味を教えてください。

  • 右クリックイベント

    Windows XP、Access2000での開発で、サブフォーム上のテキストボックスを右リックすると (普通のクリックではなく、あえて右クリック)、 別のフォームが表示される処理を作ろうとしています。 VBAのコードを Private Sub テキストボックス名_mousedown(Button As Integer, Shift As Integer, X As Single, Y As Single)  If Button = acRightButton Then  DoCmd.OpenForm "フォーム名"  End If End Sub としているのですが、これだとマウスを離してしまうと、画面が閉じてしまいます。 普通のクリックでのイベントと同じように、右クリックで別のフォームを表示するにはどうしたらよいでしょうか? 初心者です。 どなたか分かる方教えてください!!

  • 右クリックができない

    XP Professional SP2 スタートボタンを押すと、いろいろ一覧が表示されますよね。 ログオフ、終了オプションと同じ横ラインは右クリックで項目が表示されますが、それより上(マイコンピュータなどが表示されている列と、最近使ったプログラムの列)が右クリックをしても何の項目も表示されません。 なので、”スタートメニューにアイコンを追加”をしたプログラムのショートカットが削除できません。どうすればいいでしょうか? デスクトップ上でIEをスタートメニューに追加して、さらにデスクトップのIEを右クリックして、項目から削除できますが、不便なので、直したいです。

  • Excel VBA で1時的に右クリックを使いたい

    30枚ほどのシートの表を一挙に変更したいです。ところが、各シートに次のコードが入っているため、右クリックしてコピーとか一切使えません。各シートの変更ができるまで、右クリック使いたいです。何か方法ありませんでしょうか? ' 画面の一番上表示 Dim hr As Range Set hr = Range("A1") '左上隅セルを設定 ActiveWindow.ScrollRow = hr.Row '行の一番上にスクロール ActiveWindow.ScrollColumn = hr.Column '列の一番左にスクロール End Sub Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True 'プロシージャ終了後に表示されるショートカットメニューの非表示 If Target.Row > 14 And Target.Row < 45 And Target.Column > 13 And Target.Column < 15 Then 明細入力フォーム.Show End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 1 And Target.Column < 3 Then Call ShowCalendarFromRange2(Target) End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 3 And Target.Column < 5 Then Call ShowCalendarFromRange2(Target) End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 5 And Target.Column < 7 Then Call ShowCalendarFromRange2(Target) End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 8 And Target.Column < 10 Then Call ShowCalendarFromRange2(Target) End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 2 And Target.Column < 4 Then UserForm3.Show End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 4 And Target.Column < 6 Then UserForm3.Show End If If Target.Row > 36 And Target.Row < 45 And Target.Column > 6 And Target.Column < 8 Then UserForm3.Show End If If Target.Row > 36 And Target.Row < 44 And Target.Column > 9 And Target.Column < 11 Then UserForm3.Show End If End Sub

  • VBA ユーザーフォームの Keypreview について

    いつもお世話になっています。 VBAのユーザーフォーム上で、KeyDown イベントを使いたいのですが、下のコードが動きませんでした。 Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If e.KeyCode = Keys.z Then MsgBox "効いてるよ!" End If End Sub エラー表示も出ません。 ウェブで調べたところ、VBでは「KeyPreview」プロパティーを「true」にすれば解決するという記事をあちこちで見かけましたが、VBA(Excel2003)のユーザーフォームプロパティには、そのような項目が見当たりません。コード上で無理やり設定してみるとエラーになります。 どのようにすれば解決するでしょうか? お知恵をお貸し下さい。

  • ダブルクリック・右クリックの操作方法

    勤務表作成してます。 A1に「ON・OFF」を表示します。 「ON」のときに、ダブルクリックで、上のセルを表示、右クリックで「1」を表示します。 「OFF」のときは、コンテキストメニュ-(通常の操作)が出来るようにしたいのですが、ON.OFFの切り替え操作のVBAがわかりません。 よろしくお願いします。 Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ActiveCell = ActiveCell.Offset(-1, 0).Value If Target = Range("$A$1") Then Cancel = True If Range("$A$1").Value = "イベントON" Then Range("$A$1").Value = "イベントOFF" Else Range("$A$1").Value = "イベントON" End If If Range("$A$1").Value = "イベントOFF" Then Exit Sub End If End If End Sub Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) ActiveCell = "1" ' If Target = Range("$A$1") Then ' Cancel = True ' ' If Range("$A$1").Value = "イベントON" Then ' Range("$A$1").Value = "イベントOFF" ' Else ' Range("$A$1").Value = "イベントON" ' End If If Range("$A$1").Value = "イベントOFF" Then Exit Sub End If End Sub

  • 右クリック、ダブルクリックの操作

    勤務表作成してます。 A1に「ON・OFF」を表示します。 「ON」のときに、ダブルクリックで、上のセルを表示、右クリックで「1」を表示します。 「OFF」のときは、コンテキストメニュ-(通常の操作)が出来るようにしたいのですが、ON.OFFの切り替え操作のVBAがわかりません。 よろしくお願いします。 Option Explicit Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ' ActiveCell = ActiveCell.Offset(-1, 0).Value ' ' If Target = Range("$A$1") Then ' Cancel = True If Range("$A$1").Value = "イベントON" Then Range("$A$1").Value = "イベントOFF" Else Range("$A$1").Value = "イベントON" ActiveCell = ActiveCell.Offset(-1, 0).Value Exit Sub End If Cancel = True If Range("$A$1").Value = "イベントOFF" Then Exit Sub End If End Sub Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 'ActiveCell = "1" ' If Target = Range("$A$1") Then ' Cancel = True ' If Range("$A$1").Value = "イベントON" Then ' Range("$A$1").Value = "イベントOFF" If Range("$A$1").Value = "イベントON" Then ActiveCell = "1" Else: Range("$A$1").Value = "イベントOFF" Exit Sub End If Cancel = True If Range("$A$1").Value = "イベントOFF" Then Exit Sub End If End Sub

  • 右クリック無効を解除したい。

    スタートボタンを押下し「全てのプログラム」にマウスを移動すると、プログラムの一覧が表示されます。 そのプログラムの一覧全てで右クリックをしても何も表示されません。 どうしたら無効を解除できるでしょうか。

  • Excel2007VBA右クリックの複数回使用

    ●質問の主旨 ワークシートのイベントプロシージャにおいて右クリック Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) を連続で使用するためには以下のコードをどのように書き換えればよいでしょうか? ご存知の方ご教示願います。 ●質問の補足 ExcelのワークシートとVBAでタイムカードを作成しています。 以下のコードでは「出勤打刻」も「退勤打刻」もできません。 「退勤打刻」のコードを削除すると、「出勤打刻」はできます。 「プロシージャ名が適切ではありません」とエラーが返されます。 エラーの意図は分かりますが、「出勤打刻」と「退勤打刻」のクリック方法が違うのも 紛らわしいとも思います。同じクリック方法で統一するにはどうすればよいか悩んでいます。 ●コード '---------------------定数--------------------- Const SYUKIN_DAKOKU_CLMN As Integer = 5 '出勤打刻位置の列番号 Const TAIKIN_DAKOKU_CLMN As Integer = 6 '退勤打刻位置の列番号 Const DAY_CLMN As Integer = 2 '日付欄の列番号 '---------------------出勤打刻--------------------- Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Target.Column = SYUKIN_DAKOKU_CLMN Then '出勤打刻の位置 Cancel = True 'コンテキストメニューの抑制 If IsEmpty(Target.Value) Then 'ターゲットが空白のとき If Cells(Target.Row, DAY_CLMN).Value = Day(Date) Then '右クリックしたときの日付が日付欄の日付と等しいとき Target = Time '右クリックしたセルに現在の時間を表示 Target.NumberFormat = "hh:mm" '時間の表示形式は "hh:mm" Else MsgBox "打刻位置が間違っています", vbExclamation, "打刻位置の確認" 'メッセージ表示 Cancel = True 'コンテキストメニューの抑制 End If Else '打刻済みのときはメッセージ表示 MsgBox "すでに打刻しています", vbExclamation, "打刻位置の確認" End If End If End Sub '---------------------退勤打刻--------------------- Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Target2.Column = TAIKIN_DAKOKU Then '出勤打刻の位置 Cancel = True 'コンテキストメニューの抑制 If IsDate(Cells(Target.Row, DAY_CLMN)) = True Then '出勤打刻がされていれば If IsEmpty(Target.Value) Then 'ターゲットが空白であれば If Cells(Target.Row, DAY_CLMN).Value = Day(Date) Then '右クリックしたときの日付が日付欄の日付と等しい Target = Time '右クリックしたセルに現在の時間を表示 Target.NumberFormat = "hh:mm" '時間の表示形式は "hh:mm" Else MsgBox "打刻位置が間違っています", vbExclamation, "打刻位置の確認" 'メッセージ表示 Cancel = True 'コンテキストメニューの抑制 End If Else '打刻済みのときはメッセージ表示 MsgBox "すでに打刻しています", vbExclamation, "打刻位置の確認" End If End If End If End Sub

  • アクセス 特定のフォームのみ右クリック禁止

    特定のフォームのみ右クリック禁止にすることは可能ですか? vbaでif文を作ればいいのでしょうか?

専門家に質問してみよう