![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
マクロ初心者です。よろしくお願いします。
セル範囲(A1:F20)に何も入力されていなければ塗りつぶしされ、
何か(文字、数字などなんでも)入力されていれば、塗りつぶしがなくなる。
というマクロをあえて、条件付き書式を使わずに行いたいとやってみました。(以下)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Range
For Each a In Range("A1:F20")
If a.SpecialCells(xlCellTypeVisible) Then
a.Interior.ColorIndex = xlNone
Else
a.Interior.ColorIndex = 7
End If
Next a
End Sub
ところが、半角数字(0以外)では動作するのですが
文字を入力するとエラーとなり「型が一致しません」と表示されます。
どう直したらよいのでしょうか?
最近マクロをやってみようと始めたので、基本的なことがわかっていないのかも。
どなたか、具体的なご指導お願いします。
No.2ベストアンサー
- 回答日時:
NO.1です。
たびたびごめんなさい。
前回の後者のコードでは空白セルがない場合、エラーとなりますので、
↓のコードのように1行追加してください。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:F20")) Is Nothing Then Exit Sub
On Error Resume Next '←お・ま・じ・な・い!
With Range("A1:F20")
.Interior.ColorIndex = xlNone
.SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 7
End With
End Sub
どうも失礼しました。m(_ _)m
素早い解答ありがとうございます。早速試してみましたところ、バッチリでした。私初心者なのでまだ知らない言葉が少々ありますのでそこらへんを調べつつ引き続き勉強したいと思います。
どうもどうもありがとうございました。大変助かりました。
No.1
- 回答日時:
こんばんは!
>If a.SpecialCells(xlCellTypeVisible) Then
の部分でエラーになるのでは?
Dim a As Range
If Intersect(Target, Range("A1:F20")) Is Nothing Then Exit Sub
For Each a In Range("A1:F20")
a.Interior.ColorIndex = xlNone
If a = "" Then
a.Interior.ColorIndex = 7
End If
Next a
としてみてはどうでしょうか?
今回はセル範囲が少ないので一つずつセルを検索していってもさほど問題はないと思いますが、
一気に!というコトであれば
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:F20")) Is Nothing Then Exit Sub
With Range("A1:F20")
.Interior.ColorIndex = xlNone
.SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 7
End With
End Sub
といった感じでも大丈夫だと思います。m(_ _)m
素早い解答ありがとうございます。早速試してみましたところ、バッチリでした。私初心者なのでまだ知らない言葉が少々ありますのでそこらへんを調べつつ引き続き勉強したいと思います。
どうもどうもありがとうございました。大変助かりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelで小数点0を表示させる方法
-
エクセルで0.0と表示したい
-
エクセル 絶対値の合計
-
他シートのある列を検索して一...
-
【EXCEL】関数で計算された数字...
-
Excelで合計の金額を違うセルに...
-
エクセル 背景色のついたセル位...
-
エクセル .50以下で切り捨て、...
-
Excel VBAにてUserFormのTextBo...
-
Googleスプレッドシートで合計...
-
エクセルで文字を180度回転...
-
セルの数式を計算させないで文...
-
エクセルで運賃計算
-
Excelでの関数数式は分かるので...
-
エクセルのIF関数について
-
エクセルのグラフで、空白なの...
-
EXCEL VBA 選択範囲をTargetに
-
Excelで方眼紙を作り、そこに手...
-
エクセルつくったグラフで10月...
-
vlookupで返された値が空白だっ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelで小数点0を表示させる方法
-
エクセルで0.0と表示したい
-
エクセル 絶対値の合計
-
他シートのある列を検索して一...
-
【EXCEL】関数で計算された数字...
-
vlookupで返された値が空白だっ...
-
エクセルで
-
指定した範囲内のセルが全て入...
-
セルの数式を計算させないで文...
-
Excelで合計の金額を違うセルに...
-
EXCELで上位10個のデータを平均...
-
エクセル .50以下で切り捨て、...
-
エクセルで網掛けをしたセルを...
-
エクセルの文字列を結合しても...
-
Googleスプレッドシートで合計...
-
Excel VBAにてUserFormのTextBo...
-
エクセル 背景色のついたセル位...
-
エクセルでコピー。結合もセル...
-
numbersで累計を計算するには
-
マクロ クリックしたら色変わる
おすすめ情報