• ベストアンサー

エクセルVBAについて、ある領域の中のセルが変化したらマクロが実行され

エクセルVBAについて、ある領域の中のセルが変化したらマクロが実行される方法を教えて下さい。 下記のようなイメージです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If ActiveCell.Columns("A:A") Then 上記のようなイメージで2通り教えて下さい。 ・A列が選択された時 ・A列のうちで例えばA3セル以降が選択された時 宜しくお願いします。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 1 Then MsgBox "A列です" If Target.Column = 1 And Target.Row > 3 Then MsgBox "3行目以降です" End Sub こんな感じのことでしょうか。

その他の回答 (1)

  • ppp21
  • ベストアンサー率13% (6/46)
回答No.1

Select Case True Case Not Intersect(Target, Range("b:b")) Is Nothing MsgBox "池田大作エロジジイ" Case Not Intersect(Target, Range("a3:a65536")) Is Nothing MsgBox "創価学会は日本のクズ" End Select

関連するQ&A

  • エクセルマクロ(VBA)で指定したセルが変化したときに実行するには?

    VBAでsheetの中のworksheet_changeなどでマクロを書くと、そのシー トの中のどのセルを変化させてもマクロが実行されるのですが、これ を、A1とc1とc2が変化したときだけ処理を実行させたいのです。 以下のマクロのどこかを編集すると、そのようなことが出来るのでし ょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Range) ----実行する内容---- End Sub Private Sub Worksheet_Change(ByVal Target As Range) ----実行する内容---- End Sub

  • 変化するセルが変更されたら実行、というVBAを組みたい

    たとえば、このセルが変更されたら実行、というのは Private Sub WorkSheet_change (Byval Target As Range) If(Target.Address = "$D$3") Then call *** End If End Sub のようにしますよね? この場合、指定したセルは「D3」ですが、たとえば、 A列、B列、C列、D列のアクティブの行のセルが変更されたらコード実行、 というようにするにはどうしたらいいのでしょうか?

  • エクセル2010のvbaについて

    Sheet1に挿入したイメージ(ActiveX)をクリックすると数字が上がって 実行中にもう一度同じイメージをクリックすると止まるようにしたいのですが 数字が上がったまま止まりません(上限はあるのでオーバーフローはしません) Worksheet_SelectionChangeで(ActiveXのイメージがもう一回押されて) 選択セルが変わったら停止としたかったのですが反応しません イメージをクリック(実行)してもう一回押すとクリックしている間は止まりますが離すと再開されます コードにクリックされた回数がわかるようにしましたが増えません 説明が分かりにくかったら追記します 回答お願いします クラスモジュールのコード(イメージの名前によって少し処理を変えるためです) Private Sub myImg_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Dim i As Integer, a, b, C As POINTAPI, obj As OLEObject i = myImg.Index - 1 Call GetCursorPos(C) Set obj = ActiveWindow.RangeFromPoint(C.X, C.Y) b = Range("A1") Range("A1") = obj.Name Range("A2") = Range("A2") + 1    'クリックされた回数が分かるようにするため追加 If Range("A2") = 2 Then Range("C1").Select End If Range("A3") = "B1" If obj.Name = 2 Then Range("A3") = "B3" Range(Range("A3")).Select End Sub Sheet1のコード Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Target.Address <> Range(Range("A3")).Address Then Exit Sub Do While ActiveCell < Range("A4") * 100 If ActiveCell.Address <> Range(Range("A3")).Address Then Exit Do End If DoEvents ActiveCell = ActiveCell + 1 Loop End Sub

  • エクセルVBAについて

    エクセルVBAについて range("B5") = 1行の、選択したセルの値 というようなマクロを作成したいと思っています。 というのも、B5セルの値が、1行で選択したセルの値に変化できればと思っています。 ちなみに下のようなコードを書いてみたのですが、うまくいきません orz Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("B5") = Rows(1).ActiveCell.Value End Sub 初心者で申し訳ありませんが、よい方法がありましたら、 よろしくお願いいたします。

  • Excelでセルの値を変化させた時にマクロを実行するには?

    "A1"のセルに値を入れるとマクロが実行するように組んだのですが、問題が発生しました。 Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("A1") Then      cells(1,2)=5      ・・・・ End If End Sub ここでA1に"5"を入力すると、B1に5と入力されるのですが、Target=5と認識してしまい、A1と同じ値になるので無限ループになってしまいます。 なにか回避策はないでしょうか? よろしくお願いします。

  • エクセルVBAでセル変化したら別のセルへコピーする

    おはようございます。VBAをはじめて浅い初心者です。 あるセルに数字および文字列が入力されたら違うセルへコピーしたいのですがどのようにすればできますか。 Private Sub Worksheet_Change(ByVal Target As Range)とか 使用してつくればいいのですか?教えてください。

  • マクロの疑問

    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を選んでも全く移動しないのはなぜでしょうか。 なにか落とし穴がありそうで。。。 よろしくお願いします。

  • (エクセルVBA)セルを左クリックしたら実行させるには?

    エクセルVBA初心者です。 下のように、同じシート内のコードとして2つのサブプロシージャがある状態なのですが、 シート内のどこかのセルを左クリック→指示(1) シート内のどこかのセルを右クリック→指示(2) のようにするにはどうしたらいいのでしょうか? (この状態だと、右クリックすると選択範囲が変わったことが優先的に認識されて指示(1)のほうが実行されてしまうようです。) 説明不足かもしれませんが、何を説明していいのか分からないので、補足が必要だったら言ってください。すみませんがよろしくお願いします。 --------------------------------------------------------------- Private Sub Worksheet_SelectionChange(ByVal Target As Range) 指示(1) End Sub --------------------------------------------------------------- Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 指示(2) End Sub ---------------------------------------------------------------

  • エクセル マクロを利用して繰り返して入力する方法

    マクロでA1B1C1D1E1F1セルに入力しF1入力後A2B2C2D2E2F2と 下方向へ繰り返し800行くらいまで入力し、それとB列はスキップしたいのですが下記の方法で別々のシートでは うまくいくのですが同じシ-ト内ではエラ-になってしまいます 次の行への移動 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 7 Then Cells(Target.Row + 1, 1).Select End If End Sub B列のスキップ Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Range("G1") <> "" Then If Target.Column = 2 Then Target.Offset(0, 1).Select End If End If End Sub どなたかご存じの方教えて下さい

  • エクセル2003 VBAでセル移動

    いつもお世話になります。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Row > 9 Then If Target.Column = 3 Then Cells(Target.Row, 4).Select ElseIf Target.Column > 5 Then Cells(Target.Row + 1, 1).Select End If End If End Sub これで、B列からC列を飛ばしてD列にセル移動して取りあえずの目的は達成しているのですが、 D列からB列には方向キー移動してくれません。Target.Columnが3になるんで当たり前なんですが・・・ B列の入力ミスがあるときマウスで移動させるか、A列まで戻ってから方向キーで上に上がるかです。 何かいい方法ありませんでしょうか。D列から方向キーで戻るときも、出来ればC列を飛ばしてほしいです。 よろしくお願いします。