- 締切済み
Changeイベントについて
エクセル2003のPrivate Sub Worksheet_Change(ByVal Target As Range)の上で Targetの指定方法ですが 1 単一セル 2 単一セルを複数(かなり多数) 3 セル範囲 4 セル範囲を複数(かなり多数) と4種に分けて、1と3はわかりましたが、2と3がわかりません どなたかご教授ください また、セルの値が変化したときに、マクロを起動させたいのですが、入力セルごとに(入力する値が同じ場合でも)、違うマクロを起動させる場合、どのように振り分ければいいでしょうか
- su-darabusi
- お礼率73% (61/83)
- オフィス系ソフト
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7940)
趣味とか「実際にヤリタイ仕事の内容」に応じて,やりようは様々あります。 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
- KURUMITO
- ベストアンサー率42% (1835/4283)
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メソッドを使います。
お礼
交通事故のため、急遽の入院、パソコンは大破、で 遅くればせながら、御礼のみにて失礼いたします
- watabe007
- ベストアンサー率62% (476/760)
Intersectメソッドを使ってみましょう
お礼
交通事故のため、急遽の入院、パソコンは大破、で 遅くればせながら、御礼のみにて失礼いたします。
関連する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
- 締切済み
- Visual Basic
- 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列のセルに "機能回復" と自動入力される、 というシートが欲しいのです。 上記マクロ、それぞれ単発だと機能するのですが、一緒に出来ません。 どなたか、解決方法をご教授下さい。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- イベントマクロで「コンパイルエラー 因数は省略できません」
マクロ初心者です イベントマクロを作りました 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つのセルに値を入力する場合は問題無いのですが、 範囲指定の右下(黒十字が出る)をマウスでドラッグで引っ張る、もしくは、範囲指定した部分をドラッグして移動、 という操作をすると、値がついてくる時とそうでない時があります。 数字の大きいセル番地だと何故かそのような現象が出ません。 どういった理由からで、どのように修正すればよいでしょうか。
- ベストアンサー
- オフィス系ソフト
お礼
交通事故のため、急遽の入院、パソコンは大破、で 遅くればせながら、御礼のみにて失礼いたします