
No.4ベストアンサー
- 回答日時:
こんばんは。
#2の回答者です。
>セルB1に引き金のキーワードが入ります。
なるほど、意味が分かりました。
キーワードが、例えば、「keyword」なら、以下のようにすればよいです。
And Target.Value = "keyword" Then (流れは、下のコードを参照してくださいょ
一応、Binary 比較ですから、大文字・小文字は別になります。
複数の場合などは、またおっしゃってください。少し、ややこしくなります。
Text 比較の場合は、大文字・小文字は同じになりますが、
And StrComp(Target.Value, "keyword", vbTextCompare) = 0 Then
としてあげます。他にも、Like演算子などもありますが、オプション・コンペア・ステートメントが必要になってしまいます。
> Application.EnableEvents = False
これを入れないと、新たにイベントが発生してしまいます。
しかし、
>Application.EnableEvents = True
終わった後に、イベントの発生を戻さないと、次回、イベント起動しません。
もちろん、それを無視して、コードが再帰しても、入り口で、弾かれるようなコードをおいておけば、二度目は弾かれるのですが、制御しないままよりも、このような場合、基本的に、EnableEvents でイベントを止めます。これは、ステップ・モードでみれば分かります。
'//
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub 'セル値が複数の場合は除外
If Target.Address = "$B$1" And Target.Value = "keyword" Then '←KeyWord
Application.EnableEvents = False 'イベントの中断をしないと、新たにイベントが発生
Range("B3:B8").ClearContents
Application.EnableEvents = True
End If
End Sub
'//
この回答への補足
ベストアンサーですが、
お二方に差し上げたいのですが、一つしか選べません。
恐縮ですが、
そっくり使わせていただいたコードを提供いただいたので、
こちらにさせていただきました。
どうも有り難うございました。
早速2度目の回答を頂き、有り難うございました。
よく分かりました。
結局は、B1セルに入ったときだけ引き金を引くというイベントは存在しない、
ということですね、了解しました。
また、3番のお礼に書きましたが、やることは複雑ではなく、
B1に作業するキーワードが入れば単純に何箇所かのクリアをするだけです。
ということから、
2番目に頂いた回答をそっくり使わせていただきます。
追加でお教えいただいた、
引き金の条件も分かっておりました。
また、イベントのgo,stopも了解です。
お手間をお掛けしました。
お世話になりました。
No.3
- 回答日時:
No1です
>先ず、やりたいことは
セルB1に引き金のキーワードが入ります。
それを引き金にセルB3~B8をクリアする、です。
「B1に何か入力されればB3~B8を削除する」だけなら以下で良い気がしますが。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then Range("B3:B8").ClearContents
End Sub
「B1で入力されたものと一致する値のみをB3~B8から削除する」場合なら以下のような感じです。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
If Target.Address <> "$B$1" Then Exit Sub
For i = 3 To 8
With Range("B" & i)
If .Value = Range("B1") Then .ClearContents
End With
Next i
End Sub
早速2度目の回答を頂き、有り難うございました。
よく分かりましたので、今回の回答は読みやすくなりました。
結局は、B1セルに入ったときだけ引き金を引くというイベントは存在しない、
ということですね、了解しました。
また、やることは複雑ではなく、
B1に作業するキーワードが入れば単純に何箇所かのクリアをするだけです。
ということから、
2番目に頂いた回答をそっくり使わせていただきます。
追加でお教えいただいた、
指定内容と同じモノをクリアするというロジックも
今後使わせていただきます。
お手間をお掛けしました。
お世話になりました。
No.2
- 回答日時:
こんにちは。
イベントが、ループしていますから、再帰して、パラメーターのTarget に、Range("B3:B8")のValue値が格納されて、配列になっているので、それと、B1の値と比較するので、「13:型が一致しない」というエラーが出ます。(意味が分かるでしょうか?)
ただ、そのコードの目的が書かれていないので、コードが意味が良く分かりませんが、こちらの類推ですが、たぶん、B1に何かを入れたら、Range("B3:B8").ClearContents したいように思えます。
>If Target = Range("B1") Then
まさか、Value値が一致しているということなのでしょうか、イベントで同じセルの比較などはありませんから、セルの場所ということにします。
'//
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub 'セル値が複数の場合は除外
If Target.Address = "$B$1" Then
Application.EnableEvents = False 'イベントの中断
Range("B3:B8").ClearContents
Application.EnableEvents = True
End If
End Sub
'//
この回答への補足
お教えいただいたコードがそっくり使えますので、
コピーさせていただきます。
(私のやりたいことにピッタリのイベントが在れば、そちらに変更しますが)
有り難うございました。
なお、再度回答いただけるかも知れませんので、もう少し開けておきます。
早速有り難うございました。
お教えいただいた内容は違いますが、
1番の方と同じことだと理解しました。
何をやりたいかは、ご指摘のとおりです。
頂いた回答で何となく分かりましたが、
考え方が違っていたみたいです。
B1に変更があったときにだけイベントが発生する、と思っていました。
なので、書き込みは1回なので、お教えいただいた、「ループする」とは思っていませんでした。
このチェンジイベントは、シートに対して引き金が引かれるのですね。
なお、1番の方のお礼にも書きましたが、
私の考えのようなイベント引き金は存在しないのでしょうか。
追加で恐縮ですが、お教えいただければ嬉しいです。
宜しくお願いいたします。
No.1
- 回答日時:
Range("B3:B8").Select
Selection.ClearContents
によりシートに変更が加わった後もセル範囲として
If Target = Range("B1") Then
でB1と比較しているため、型不一致となっているようです。
If Target = Range("B1") Then
の手前に
If Selection.Count <> 1 Then Exit Sub
を追加でどうでしょ。
早速有り難うございました。
2番の方の回答にも書かれていますが、
何をやりたいかと私の考えが違っていたみたいです。
頂いた回答で何となく分かりました。
先ず、やりたいことは
セルB1に引き金のキーワードが入ります。
それを引き金にセルB3~B8をクリアする、です。
そして考え違いは、
B1に書き込まれたら(変更があったら)イベントが発生すると思っていました。
なので、書き込みは1回なので、お教えいただいた、「ループする」とは思っていませんでした。
このチェンジイベントは、シートに対して引き金が引かれるのですね。
よく分かりました。
なお、私の考えのようなイベント引き金は存在しないのでしょうか。
追加で恐縮ですが、お教えいただければ嬉しいです。
宜しくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) Excelマクロでセルに値が入力されたら実行する 5 2023/08/06 11:03
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) Worksheet_Change 4 2023/03/12 21:54
- Visual Basic(VBA) エクセル VBAで複数セル選択時エラーになる問題 3 2022/10/04 02:40
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
このQ&Aを見た人はこんなQ&Aも見ています
-
今年はじめたいことは?
今年はこれをはじめたい!ということを教えてください!
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
みんなの【マイ・ベスト積読2024】を教えてください。
積読、ついついしちゃいませんか?そこでみなさんの 「2024年に買ったベスト積読」を聞きたいです。
-
AIツールの活用方法を教えて
みなさんは普段どのような場面でAIツール(ChatGPTなど)を活用していますか?
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
ExcelのVBAでエラー13が出てしまいます。(泣き)
Excel(エクセル)
-
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
-
エクセル:Worksheet_Changeのエラー回避
Excel(エクセル)
-
-
4
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
5
ブック名、シート名を他のモジュールからも参照可能にする方法
Access(アクセス)
-
6
VBA:結合されたセルに対する「Target」について
Access(アクセス)
-
7
worksheet_changeがループする
PowerPoint(パワーポイント)
-
8
[VBA]型が一致しません
Visual Basic(VBA)
-
9
【VBA】Worksheet_changeイベントで特定のキーが押されたときだけ無効にしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】1回目の実行後、2...
-
エクセル内に読み込んが画像の...
-
Excelのメニューについて
-
Excelで作成した出欠表から日付...
-
Excel 偶数月の15日(土日祝...
-
Excelの数式について教えてくだ...
-
勤務外時間を出す表が作りたい
-
VLOOKUP FALSEのこと
-
エクセルの数式について教えて...
-
【マクロ】参照渡しについて。...
-
Excel 日付の表示が直せません...
-
Excelの条件付書式について教え...
-
マクロを実行すると、セル範囲...
-
【マクロ】参照渡しとモジュー...
-
【マクロ】シート追加時に同じ...
-
Excelファイルを開くと私だけVA...
-
Excelのデーターバーについて
-
エクセルの設定、特定の列以降...
-
別のシートの指定列の最終行を...
-
エクセル 同じ行の隣り合う数字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】重複する同じ行を、...
-
Excelの条件付き書式のコピーと...
-
vba 印刷設定でのカラー印刷と...
-
VBA の単語の意味を教えて下さい。
-
Excel 日付の表示が直せません...
-
エクセル 同じ行の隣り合う数字...
-
エクセル条件付き書式について。
-
エクセルの数式につきまして
-
ファイル名の変更
-
エクセル 数字のみ抽出につて
-
Excelの開始ブックを固定したい...
-
エクセルの数式について教えて...
-
エクセルのセルをクリックする...
-
=INDIRECT(RIGHT(CELL("filenam...
-
エクスプローラーで見ることは...
-
Excelの関数で質問です
-
至急お願いいたします 屋上の備...
-
エクセルでセルに入力する前は...
-
関数を教えて下さい
-
Excel 関数での質問です
おすすめ情報