
お世話になります。
いろいろなところでお力を受けて、
以下のようなVBAを作ったのですが、
このような記述ですと、複数セルを選択してペーストすると
エラーが出てしまい一括処理ができなくて困っております。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F:F,K:K")) Is Nothing Then
With Application
.EnableEvents = False
With Target
.Value = Application.Substitute(.Value, "A", "B")
.Value = Application.Substitute(.Value, "C", "D")
.Value = Application.Substitute(.Value, "E", "F")
.Value = Application.Substitute(.Value, "G", "H")
.Value = Application.Substitute(.Value, "H", "I")
If Target.Value = "J" Then Target.Interior.Color = vbYellow
If Target.Value = "K" Then Target.Interior.Color = 3329330
.Value = Application.Substitute(.Value, "J", "CR")
.Value = Application.Substitute(.Value, "K", "CR")
.Value = Application.Substitute(.Value, "M", "CR")
End With
.EnableEvents = True
End With
End If
End Sub
複数セルを選択して処理をするためには、
どのような記述にしたらよいでしょうか?
ご指導宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちは
>どのような記述にしたらよいでしょうか?
記述の内容が複数セルをまとめて処理できるような内容ではないので、For~Nextなどで個々のセルを処理するようにすれば良いでしょう。
例えばこんな感じ。
※ 記述法は変えましたが、処理内容はご提示のロジックのままです。
※ ですので、色に関してはセルに色を付ける処理しかしていないため、色の付いているセルの値を削除しても、色はそのままで残ります。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c, v, R, i
Set Target = Intersect(Target, Range("F:F,K:K"))
If Not Target Is Nothing Then
Application.EnableEvents = False
R = Split("A,B,C,D,E,F,G,I,H,I,J,CR,K,CR,M,CR", ",")
For Each c In Target.Cells
If c <> Empty Then
v = c.Text
If v = "J" Then c.Interior.Color = vbYellow
If v = "K" Then c.Interior.Color = 3329330
For i = 0 To 14 Step 2
v = Replace(v, R(i), R(i + 1))
Next i
c.Value = v
End If
Next c
Application.EnableEvents = True
End If
End Sub
ご指導ありがとうございます!
まだ、作業に移れておりませんが、
勉強しながらやってみたいと思います。
お返事が遅れてしまい申し訳ございませんでした。
No.3
- 回答日時:
こんにちは
イベントなどで使われている Target As Range は範囲なので複数のセル情報が入る場合があります(#1様が回答されている通りです)
既に処理コードも示されているので参考程度の情報です
Targetは複数のセル範囲を示す場合があり、所謂Object型の変数です
Objectやコレクションなどに対して繰り返し処理をすれば1つ1つ処理する事が可能ですよね
For Each r In ・・
Next
既に単セルに対して問題がない 処理が完成されているのなら
その処理を繰り返せば良い事になります For Eachループの中に入れる
今回はTargetの構造?なりが判れば解決できると思いました
一応、このような考え方でコードを示すと
(すべて当該モジュールに)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F:F,K:K")) Is Nothing Then
Application.EnableEvents = False
Dim r As Range
For Each r In Target.Cells
Call Target_Cells(r)
Next
Application.EnableEvents = True
End If
End Sub
Private Sub Target_Cells(r As Range)
With r
.Value = Application.Substitute(.Value, "A", "B")
.Value = Application.Substitute(.Value, "C", "D")
.Value = Application.Substitute(.Value, "E", "F")
.Value = Application.Substitute(.Value, "G", "H")
.Value = Application.Substitute(.Value, "H", "I")
If .Value = "J" Then .Interior.Color = vbYellow
If .Value = "K" Then .Interior.Color = 3329330
.Value = Application.Substitute(.Value, "J", "CR")
.Value = Application.Substitute(.Value, "K", "CR")
.Value = Application.Substitute(.Value, "M", "CR")
End With
End Sub
(プロシージャに分けました。プロシージャ名は適時に)
本当は#2様の示されているようなコードがすんなり浮かべば良いのですが
大変勉強になりました。
ベストに選びたかったのですが、
二番の方がお早く回答して下さったので、
そちらにつけさせていただきました。
この度はありがとうございました。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) Worksheet_Change 4 2023/03/12 21:54
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
コンビニでおにぎりを買うときのスタメンはどの具?
コンビニでおにぎりを買うとき、何の具材を選ぶことが多いですか?
-
人生でいちばんスベッた瞬間
誰しも、笑いをとろうとして失敗した経験があると思います。
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
-
ExcelのVBAでエラー13が出てしまいます。(泣き)
Excel(エクセル)
-
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
-
4
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
5
VBA:結合されたセルに対する「Target」について
Access(アクセス)
-
6
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
7
エクセルVBA intersect columnsの複数列のやり方
Visual Basic(VBA)
-
8
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
9
エクセル:Worksheet_Changeのエラー回避
Excel(エクセル)
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
エクセルVBA 複数行にまたがっている選択を判定するには
Excel(エクセル)
-
12
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
13
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
14
エクセルVBAでシートモジュールでのパブリック変数
Excel(エクセル)
-
15
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
16
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
17
マクロの「SaveAs」でエラーが出るのを解消したいです(再)
Visual Basic(VBA)
-
18
Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる
Visual Basic(VBA)
-
19
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
20
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
特定の名前のオートシェイプの...
-
シグナル 6(SIGABRT)とは?
-
どう増強すべきか
-
IF文に時間(何時から何時ま...
-
【VBA】エラー処理で別プロシー...
-
複数個のTextBoxでいずれかの内...
-
For ~ Next文
-
VBA 複数の行を高速で削除する...
-
Excel VBA セルの名前があるか...
-
Functionで戻り値を複数返す方法
-
どうやってもFor文を抜けてしま...
-
C言語のGOTO文(組み込み系)
-
Word VBA。各マクロの間に待ち...
-
シェルスクリプトでファイル内...
-
ドリブン??
-
VB.NET SPRED(チェックボック...
-
エクセルVBAでロックをかけたい
-
EXCELのVBAについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
シグナル 6(SIGABRT)とは?
-
どう増強すべきか
-
特定の名前のオートシェイプの...
-
IF文に時間(何時から何時ま...
-
vbaのエラー対応(実行時エラー...
-
マクロで、次のコードへ行く前...
-
Excel VBA セルの名前があるか...
-
Word VBA。各マクロの間に待ち...
-
特定のファイルを他のプロセス...
-
どうやってもFor文を抜けてしま...
-
Functionで戻り値を複数返す方法
-
シェルスクリプトでファイル内...
-
【VBA】エラー処理で別プロシー...
-
ExcelのVBAで、選択したファイ...
-
【C#】Page_Loadさせない方法に...
-
エクセル VBAで複数セル選択時...
-
StatusStripの表示が更新されな...
-
VBAでBook読み込み時の非表示方...
おすすめ情報