• 締切済み

Changeイベントについて

エクセル2003のPrivate Sub Worksheet_Change(ByVal Target As Range)の上で Targetの指定方法ですが 1 単一セル 2 単一セルを複数(かなり多数) 3 セル範囲 4 セル範囲を複数(かなり多数) と4種に分けて、1と3はわかりましたが、2と3がわかりません どなたかご教授ください また、セルの値が変化したときに、マクロを起動させたいのですが、入力セルごとに(入力する値が同じ場合でも)、違うマクロを起動させる場合、どのように振り分ければいいでしょうか

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

趣味とか「実際にヤリタイ仕事の内容」に応じて,やりようは様々あります。 private sub worksheet_change(byval Target as excel.range)  dim h as range  on error resume next    for each h in application.intersect(target, range("A:A")) ’A列を編集した場合(単セル・セル範囲・飛び飛びセル)   msgbox h.address & " A run" ’具体的な仕事を書く 以下同じ  next  for each h in application.intersect(target, range("C:C")) ’C列を編集した場合(単セル・セル範囲・飛び飛びセル)   msgbox h.address & " C run"  next end sub

su-darabusi
質問者

お礼

交通事故のため、急遽の入院、パソコンは大破、で 遅くればせながら、御礼のみにて失礼いたします

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

2について例えば If Target.Address = "$A$1" Or Target.Address = "$A$10" Or Target.Address = "$A$15" Then 4について例えば If (Target.Row >= 5 And Target.Row <= 10 And Target.Column >= 1 And Target.Column <= 3) Or (Target.Row >= 20 And Target.Row <= 30 And Target.Column >= 4 And Target.Column <= 5) Then その他について例えば If Target.Address = "$A$5" Then Call 表示 End If 表示というマクロを呼び出すにはCallメソッドを使います。

su-darabusi
質問者

お礼

交通事故のため、急遽の入院、パソコンは大破、で 遅くればせながら、御礼のみにて失礼いたします

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

Intersectメソッドを使ってみましょう

su-darabusi
質問者

お礼

交通事故のため、急遽の入院、パソコンは大破、で 遅くればせながら、御礼のみにて失礼いたします。

関連するQ&A

  • エクセル イベントマクロ Changeイベントを複数作りたい

    Private Sub Worksheet_Change(ByVal Target As Range)   If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub 以下マクロの内容 End Sub これでセルA1が変わるとイベントマクロが発生しますが セルB1が変わると別のマクロが発生し セルC1が変わるとまた別のマクロが発生し…とするには どうすればよいのですか 単純に並べて書いたらだめみたいだったんですけど

  • Excel VBA イベントプロシージャを2つ記述する(基本です)

    基本的な事なのですが、Excelのイベントプロシージャで2つプログラムを作るにはどうやって記述すればよいのでしょうか? 具体的には、worksheetのchangeイベントで、セルC5の値を変えた時と、セルG7の値を変えた時の2通りのマクロを作成したいのです。 Private Sub Worksheet_Change(ByVal Target As Range) C5を変えた時の処理 End Sub Private Sub Worksheet_Change(ByVal Target As Range) G7を変えた時の処理 End Sub このように書けばよいのでしょうか?そうするとTargetがかぶっておかしくなる気がします。。 お願いします。

  • エクセルマクロvbのchangeイベントで複数入力した時フリーズして困っています

    マクロ初心者で困っています。 セルに『新規』と入力すると、T2セルに『F』と表示されるようにしたのですが、 『新規』をコピーして複数セルに貼り付けると貼り付けた状態のままパソコンが動かなくなってしまいます。 複数のセルがchangeした場合、マクロを終了する方法はないでしょうか? 教えて下さいm(_ _)m Private Sub Worksheet_Change(ByVal Target As Range) Dim tr As Integer Dim x As String If Intersect(Target, Range("H4:H253")) Is Nothing Then Exit Sub x = Target.Value tr = Target.Row If x = "" Then Exit Sub If x = "新規" Then Range("T2") = "F"   End sub

  • Worksheet_Changeイベントでのセル設定

    マクロ初心者です。Excel2003です。 Sheet1に下記のイベントを記述しましたが、(3)だけ動作してくれません。 シート上では、N27とO27の2つのセルが結合されており、入力規則でリスト選択(3択)する設定になっています。(1)や(2)のように認識してくれるようにするにはどうしたらいいでしょうか? どなたか教えてください。よろしくお願いします!! Private Sub Worksheet_Change(ByVal Target As Range)  Select case Target.Address   (1)Case "$E$5"     ・・・   (2)Case "$E$6", "$E$24", "$N$6"     ・・・   (3)Case "$N$27"     ・・・  End Select End Sub

  • Worksheet_changeイベントが動作しない

    Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case "$D$224" If Target.Value = "" Then Range("D224").Value = "-" End If End Select End Sub DeleteキーでD224をクリアした場合、D224に"-"が入力されません。 D224はD225と結合してあります。 select~caseを使ってdeleteキーで"-"が入力されるような動作を教えてください・・よろしくおねがいします。。。

  • エクセルマクロのchangeイベントについて

    こんばんわ changeイベントを使ってみようと思い、下記のマクロを作ってみたのですが、どうしても動きません。 Private Sub Worksheet_Change(ByVal Target As Range) Set Target = Range("b4") Application.DisplayAlerts = False Dim i As Long Workbooks.Open Filename:="c:\osaruPKsarch\sarch.xls"  For i = 1 To 5 Step 1   Cells(3, i + 50) = Cells(7, i + 50)  Next i End Sub なぜ動かないのかもわかりませんToT アドバイスの程よろしくお願いいたします。

  • Changeイベントに指示を加えたい

    こんにちは 現在ワークシートで下記マクロにて、日付・時間の履歴を自動入力しています。 3行目以降のC列のセルに何か入力すると、そのとなりのD列のセルに日付と時間が返されるものです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Integer, c As Integer r = Target.Row c = Target.Column If c < 3 Or c > 3 Or r < 3 Then End If Cells(r, c) <> "" Then Cells(r, c + 1) = Format(Now, "yyyy/m/d h:mm") Else Cells(r, c + 1) = "" End If End Sub この同一シートに、下記マクロの指示を加えたいのですが、うまくいきません。 3行目以降のE列のセルに "chcl" とすると、B列のセルに "機能回復" と自動入力されるものです。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Integer, c As Integer r = Target.Row c = Target.Column If c < 5 Or c > 5 Or r < 3 Then End If Cells(r, c) = "chcl" Then Cells(r, c - 3) = Format("機能回復") Else Cells(r, c - 3) = "" End If End Sub まとめると・・・・・・ 3行目以降のC列のセルに何か入力すると、そのとなりのD列のセルに日付と時間が返され、 且つ、 3行目以降のE列のセルに "chcl" とすると、B列のセルに "機能回復" と自動入力される、 というシートが欲しいのです。 上記マクロ、それぞれ単発だと機能するのですが、一緒に出来ません。 どなたか、解決方法をご教授下さい。 よろしくお願いします。

  • イベントマクロで「コンパイルエラー 因数は省略できません」

    マクロ初心者です イベントマクロを作りました Sheet2の結合されたB44:E44のセルに入力すると自動的にマクロが働いて Sheet1のW1の値のみがSheet2の結合されたB44:E44のセルに貼り付けられるマクロなのですが 実行すると「コンパイルエラー 因数は省略できません」と表示されます マクロ自体は正しく動いているのですがどういうことなんでしょう Sheet2 Worksheet Change Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target.Range("B44:E44")) Is Nothing Then Exit Sub Application.EnableEvents = False Sheets(1).Select Range("W1").Copy Sheets(2).Select Range("B44:E44").Select ActiveSheet.Paste Application.CutCopyMode = False Application.EnableEvents = True End Sub Private Sub Worksheet_Change(ByVal Target As Range)…この行が黄色になります If Intersect(Target.Range("B44:E44")) Is Nothing Then Exit Sub…intersectのところが青くなります こんな説明でわかってもらえるでしょうか?

  • エクセル マクロ ダブルクリックのイベント

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As range) というマクロをしても動きません。どうしてでしょうか? 他のsheetchaneとかのマクロは動くのですが・・ (ダブルクリックしてもセルが入力可能な状態になるだけです)

  • エクセル:Worksheet_Changeイベントについて

    Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Column = 4 Then     Target.Offset(0, 1).ClearContents     Target.Offset(0, 2).ClearContents   ElseIf Target.Column = 5 Then     Target.Offset(0, 1).ClearContents     Target.Offset(0, -1).ClearContents   ElseIf Target.Column = 6 Then     Target.Offset(0, -1).ClearContents     Target.Offset(0, -2).ClearContents   ElseIf Target.Column > 6 Then     Target.Offset(0, 4 - Target.Column).ClearContents     Target.Offset(0, 5 - Target.Column).ClearContents     Target.Offset(0, 6 - Target.Column).ClearContents   End If End Sub D列に値が入ればE,F列の値を削除、E列に値が入ればD,F列の値を削除、 F列に値が入ればD,E列の値を削除、G列以降に値が入ればD,E,F列の値を削除、 というマクロを組みたいです。 先日似たような件で質問し、上記のコードを作りました。 1つのセルに値を入力する場合は問題無いのですが、 範囲指定の右下(黒十字が出る)をマウスでドラッグで引っ張る、もしくは、範囲指定した部分をドラッグして移動、 という操作をすると、値がついてくる時とそうでない時があります。 数字の大きいセル番地だと何故かそのような現象が出ません。 どういった理由からで、どのように修正すればよいでしょうか。

専門家に質問してみよう