入力があればセルが黄色のなり、入力がなければ無色とするマクロです。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value <> "" Then
Target.Interior.ColorIndex = 6
Else
Target.Interior.ColorIndex = xlNone
End If
End Sub
このように書くと、通常は正しく動きますが、ドラッグした場合や、複数セルを一度にクリアした場合、エラーになってしまいます。
ただしく作動させるにはどう直せばいいのでしょうか?
No.2ベストアンサー
- 回答日時:
For Each ~Nextを使わずにやる方法が思い浮かばないので、たとえ列を選択された場合でも、範囲をUsedRangeと重なる部分のみに限定してみました。
これならそんなに時間はかからないと思います。ほかにももっといい方法があるとは思いますが・・・・。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Set Target = Application.Intersect(Target, UsedRange)
If Target Is Nothing Then Exit Sub
For Each c In Target
With c
If .Value <> "" Then
.Interior.ColorIndex = 6
Else
.Interior.ColorIndex = xlNone
End If
End With
Next
End Sub
If Target Is Nothing Then Exit Subは、UsedRange外を削除したような場合のエラー防止のためです。
No.1
- 回答日時:
内部を以下のようにすると、正しく動作します。
Dim c As Range
For Each c In Target
With c
If .Value <> "" Then
.Interior.ColorIndex = 6
Else
.Interior.ColorIndex = xlNone
End If
End With
Next
さっそくありがとうございます。
なるほどFor Each ~Nextで一個ずつやるわけですね。
やってみましたところ、ちゃんと作動しました。ありがとうございました。ただ、列を選択してクリアした場合、一個ずつみるためだと思いますが、かなり時間がかかってしまいます。これはどうしようもないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) エクセル VBAで複数セル選択時エラーになる問題 3 2022/10/04 02:40
- Visual Basic(VBA) VBAのトグルボタンでのマクロについて質問です 3 2022/10/10 17:23
- Visual Basic(VBA) Worksheet_Change 4 2023/03/12 21:54
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Visual Basic(VBA) 【再投稿】VBAで動作しなくて困っています 2 2022/10/11 11:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
名簿の漢字名を関数で半角カナ...
-
エクセルで行の一番上にセルに...
-
エクセルでエンターを押すと隣...
-
空白部分に連番の数字を記入し...
-
EXCELで縦の行全てに一括して文...
-
EXCEL 連動したドロップダウン...
-
Excelのテーブル上のセルの保護...
-
エクセルで空白に自動で文字を...
-
Excelで相対度数を求めたいので...
-
エクセルで休日の「休」という...
-
エクセルで決められた合計にな...
-
エクセルのオートフィル機能で...
-
オートフィルを列すべて(一番...
-
Excelの値を1減らす
-
一つのセル内でVLOOKUPで抽出し...
-
EXCELの数字が認識されない
-
エクセルで年を1年ずつ増やすや...
-
この関数教えてください!!
-
エクセル タブ 順番設定
-
エクセル 1行飛ばしで番号をつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのテーブル上のセルの保護...
-
名簿の漢字名を関数で半角カナ...
-
EXCEL 連動したドロップダウン...
-
EXCELで縦の行全てに一括して文...
-
【エクセル】入力規則のプルダ...
-
エクセルで決められた合計にな...
-
エクセルで行の一番上にセルに...
-
エクセルで空白に自動で文字を...
-
エクセルでエンターを押すと隣...
-
EXCELのNOW()関数の...
-
エクセルのオートフィル機能で...
-
空白部分に連番の数字を記入し...
-
エクセルで休日の「休」という...
-
オートフィルを列すべて(一番...
-
Excelでセルを次の行の先頭の列...
-
エクセル・・色の着いたセルの...
-
Excelで相対度数を求めたいので...
-
指定した行に飛ぶ事って可能で...
-
エクセルで年を1年ずつ増やすや...
-
エクセルの数式を等間隔にオー...
おすすめ情報