• ベストアンサー
  • 困ってます

カーソルを動かしたときは発動させたくありません

エクセルの Worksheet_SelectionChangeイベントで --------------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then MsgBox "$A$1です" End If End Sub --------------------------------------------------------- のコードを標準モジュールに書いて、A1セルをクリックすると、MsgBoxが表示させますが、 B1セルから、キーボードの「→」キーを押してA1に移動してもMsgboxが表示されてしまいます。 クリックした時はマクロを発動させたいのですが、カーソルを動かしたときは発動させたくありません。 そんな事は可能でしょうか?

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数109
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

以下の2つが用意されています。 ・ダブルクリック Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) End Sub ・右クリック Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。

関連するQ&A

  • マクロの疑問

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address <> "A2" Then Range("A2").Select End If End Sub とすると、どのセルを選んでもA2に飛ぶのに、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "A3" Then Range("A2").Select End If End Sub とすると、A3を選んでも全く移動しないのはなぜでしょうか。 なにか落とし穴がありそうで。。。 よろしくお願いします。

  • SelectionChangeイベント 文字列エラ

    エクセルvbaなのですが セルをクリックしたときに、該当する値ならメッセージを表示させる際に Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = 1Then MsgBox "" End If End Sub ならエラーにならずに動くのに Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Value = "運賃" Then MsgBox "" End If End Sub のように文字列にすると、型が一致しません。 と言うエラーになります。 If Target.Value = "運賃" Then の時でも、空白セルや数値が入ったセルをクリックした際はエラーになりません。 どのような型にすればいいのでしょうか? 実際、「運賃」と言う値が入ってるセルをクリックしても同じエラーが発生します。

  • 複数のセルを選択しているかを取得するプロパティは?

    SelectionChangeイベントで 複数のセルを選択しているかを取得するプロパティってないのでしょうか? 今は、 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Len(Target.Address) > 5 Then MsgBox "複数のセルが選択されています" End If End Sub こうしていますが、行数が多くなると文字も多くなってしまうので、このコードでは対応できません。 Rangeオブジェクトに何個セルが入ってるかを知る方法はありますか? ウォッチのTargetのcellsを見ても、どう見ればいいのかわかりません

  • エクセルで指定したセルへカーソルを移動させる

    エクセル2007で セル”I1”に文字を入力してエンターを押したら、“B11”へセルを移動させたく、 以下のように作ってみたのですが、 反応してくれません。 このVBAもインターネット上にあったものを参考にしただけなので、 何が悪いのかさっぱりわかりません。どこを修正したらよいのか教えてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Select Case Target.Address(0, 0) Case "i2" [b11].Select End Select End Sub

  • エクセルVBAで Cancel=Trueの使い方

    Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub Cancel = True MsgBox "キャンセルしました" End Sub Private Sub Worksheet_Deactivate() Cancel = True MsgBox "キャンセルしました" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cancel = True MsgBox "キャンセルしました" End Sub 以上のように使ってみましたが、どれも「キャンセルしました」とメッセージは出るものの、直前の操作(入力、シート切替、セル移動)はキャンセルされませんでした。 どこが間違っているのでしょうか?

  • Excel VBA 他のシートに演算結果を入れたい

    例えば、A&#65374;Dというシートのいずれかのo1セルに数値を入力すると、演算結果がp1に入る場合。 A&#65374;Dのどのシートでもo1に入力したら、Z!p1にp1の値を放り込みたいのです。 で、以下のようなコードを書いたのですが、上手くいきません。 因みに、セルの移動方向はオプションで「右方向」に設定してあります。 ※結果としてセルの移動を認識していないのか、まったく無反応です。 ※Range("Z!$P$1") =… の行にブレークポイントを設定しても、引っかかりません。 何が悪いのかお教え頂ければ幸甚です。 >違うシートには代入できない… ってことでしょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$P$1" Then Range("Z!$P$1") = Range("$P$1") End If End Sub ※なお、出典元のSubは以下の様なもので、正常に動作していました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then Range("B1") = Range("B1")+1 End If End Sub

  • Sheet1のA1の値が変わったら、その値をメッセ

    Sheet1のA1の値が変わったら、その値をメッセージボックスで表示したいのですが --------------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address = "$A$1" Then MsgBox Range("a1").Value End If End Sub --------------------------------------------------------- としたのですが A1に値を投入しても何も起こりません。 カーソルを他のセルに充てて、 再度A1をクリックすると、 MsgBox Range("a1").Value が表示されます。 そうではなくて、 A1に値を入れて、アクティブセルをA1じゃなくなった時(値を投入後すぐ) マクロを実行させるにはどうすればいいでしょうか?

  • エクセルvba  (ByVal Target As Range)について

    シートのイベントプロシージャーが Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub となりますが (ByVal Target As Range)部分は何なのでしょうか? 何のためにあるのかわかりません。 Private Sub Worksheet_SelectionChange() End Sub としたらエラーが返ってきました。 理由を教えてください。 よろしくお願いします。

  • エクセルのカーソル移動 横スクロールを最後の入力列まで

    エクセルのカーソル移動について エクセルシートのコードはどこから貼り付け出来るのですか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Taget.Column=11 Then ActiveCell.Offset(1,-10).Select End If End Sub

  • VBAでエラートラップがうまくいきません。

    VBAで次のようなプロシージャを実行してみました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Target.Value = " " Then          ~コード~   END IF END SUB すると複数のセルが選択されるとエラーがでます。そこで次のようにしてみました。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   On Error GoTo エラー処理   If Target.Value = " " Then     On Error GoTo 0           ~コード~   END IF   EXIT SUB エラー処理:   EXIT SUB END SUB ところがこれでもやっぱりIF文のところでエラーがでます。 当方初心者でなぜエラーがでるのかわかりません。 わかりやすくご教授ください。 よろしくお願いします。