現在EXCEL VBAである行の値が変わったときにその列の塗りつぶしの
色を変えるといった処理を作成しております。
そこで、複数選択して値を変えた場合の処理が変数の型が一致しません
的なエラーが表示されてしまいます。
どのように修正したらうまくいくでしょうか?
教えてください。
ソースは下記の通りとなります。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 13 Then Exit Sub
Application.EnableEvents = False
MsgBox (Target.Rows.Count)
Dim rngSelectRng As Range
For Each rngSelectRng In Target
If rngSelectRng.Value = "" Then rngSelectRng.Value = " "
'ステータス欄の入力の判断
'Select Case Target.Rows.Value
MsgBox (Target.Row)
Select Case rngSelectRng.Value
Case "あああ"
Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 24
Case "いいい"
Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 35
Case "ううう"
Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 38
Case "えええ"
Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 36
Case "おおお"
Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 16
Case Else
Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 2
End Select
Next
Application.EnableEvents = True
End Sub
No.1ベストアンサー
- 回答日時:
上記のコードで試してみましたが、複数選択してもエラーは出ませんでした。
どの行でエラーが出たのでしょうか。ただ、複数選択して値を変えても、一番上の行しか色がつきません。これは、
Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 24
を
Worksheets("表1").Rows(rngSelectRng.Row).Interior.ColorIndex = 24
にすると解決しました。
それから、
Worksheets("表1").Rows(rngSelectRng.Row).Interior.ColorIndex =
というのを羅列すると、見栄えもよくないし、あとから修正するのも大変なので、
With Worksheets("表1").Rows(rngSelectRng.Row).Interior
Select Case rngSelectRng.Value
Case "あああ"
.ColorIndex = 24
:
:
End Select
End With
とした方がよいかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) Worksheet_Change 4 2023/03/12 21:54
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
エクセル関数を教えてください
-
String""から型'Double'への変...
-
ApplicationとWorksheetFunctio...
-
エクセルVBAでApplication.Sum...
-
VBでSQL文のUPDATE構文を使った...
-
マクロの「SaveAs」でエラーが...
-
Filter関数を用いた結果、何も...
-
実行時エラー 438 の解決策をお...
-
VBA データ(特定値)のある最...
-
数式は残し値をクリアするマク...
-
エクセルVBAで#N/Aのようなエ...
-
マクロで"#N/A"のエラー行を削...
-
ACCESS VBAのSplit()関数の使用...
-
ACCESS2007 VBA 「INSERT INTO...
-
文字列内で括弧を使うには
-
【VBA】ワークブックを開く時に...
-
C言語のエラーについて。
-
オブジェクト型の変数にフォー...
-
Excel vbaについての質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
実行時エラー 438 の解決策をお...
-
マクロで"#N/A"のエラー行を削...
-
On ErrorでエラーNoが0
-
エクセルVBA 「On Error GoTo...
-
VBA データ(特定値)のある最...
-
実行時エラー'-2147467259(8000...
-
【VBA】ワークブックを開く時に...
-
VBでSQL文のUPDATE構文を使った...
-
ACCESSで値を代入できないとは?
-
マクロの「SaveAs」でエラーが...
-
Excel vbaについての質問
-
インポート時のエラー「データ...
-
Filter関数を用いた結果、何も...
-
「実行時エラー '3167' レコー...
-
バッチファイルで、あるスクリ...
おすすめ情報