
特定のセルの色がピンクで同じ行の特定のセルが空欄だった場合に「要確認」と入力されるマクロを作成しているのですが、ある列の処理をしようとするとそこだけオーバーフローになってしまいます。なぜでしょうか?
エラーが出るコードです。↓
Sub ピンク()
Dim pink As Long, i As Long
pink = Sheets(1).Range("E3").Interior.Color
Sheets(2).Select
For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, "A").Interior.Color = pink And _
Cells(i, "AD").Interior.Color = pink And _
Cells(i, "AF") = "" Then
Cells(i, "AF") = "要確認"
Cells(i, "AF").Font.Color = -16776961
End If
Next
End Sub
↑以上です。
AF以外全く同じコードを使用している部分ではエラーが起こりません。
よろしくお願いします。
No.6
- 回答日時:
#1です。
昔の記憶で、もやもや、同じような事が、、
確認しましたが、原因が思い出せず、、再現も出来ない為、回答をやめようと思いましたが
該当せずともヒントになればと、、的(思い)違いなら忘れてください。
Windows10 Excel2013、2016 共に再現できませんでした。
end-uさんの回答にあるように
pink As Longは、Variant もしくはDoubleに変更した方が良いかも知れません。
If Cells(i, "A").Interior.Color = pink And Cells(i, "AD").Interior.Color = pink And Cells(i, "AF") = "" Then ’オーバーフロー
=で結ぶ左辺と右辺は、右辺に影響されると記憶しています。
完全にあてずっぽうですが、Cells(i, "AF") = "" が影響している?
なので、Cells(i, "AF") = "" を And でつながず、別に If Cells(i, "AF") = "" Then でどうでしょう。
No.5
- 回答日時:
すみません対処方法を書いてませんでした
AF列の書式設定を標準や文字列に変更可能なら、そうしてください
データ上、書式を日付や通貨にしないといけないという制限がある場合、判定にValue2プロパティを使ってみましょう
If .Cells(i, "AF").Value2 = "" Then
それで対応できない場合はまた考えてみます
No.3
- 回答日時:
re:補足
なるほどその行ですか
こちらで再現しないので正解はこれ、とはいかないんですが
できるだけ紛れの無いコードに修正して、試してみてもらっていいでしょうか
判定をAnd条件ではなく分割判定にしてみる
Sub test1()
Dim pink As Variant
Dim i As Long
pink = Sheets(1).Range("E3").Interior.Color
With Sheets(2)
For i = 4 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(i, "A").Interior.Color = pink Then
If .Cells(i, "AD").Interior.Color = pink Then
If .Cells(i, "AF").Value = "" Then
.Cells(i, "AF").Value = "要確認"
.Cells(i, "AF").Font.Color = 255
End If
End If
End If
Next
End With
End Sub
Cellsプロパティの列判定を変更してみる
Sub test2()
Dim pink As Variant
Dim i As Long
pink = Sheets(1).Range("E3").Interior.Color
With Sheets(2)
For i = 4 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(i, 1).Interior.Color = pink Then
If .Cells(i, 30).Interior.Color = pink Then
If .Cells(i, 32).Value = "" Then
.Cells(i, 32).Value = "要確認"
.Cells(i, 32).Font.Color = 255
End If
End If
End If
Next
End With
End Sub
Sheets(2)にグラフなどのオブジェクトがあったりしますか?
No.2
- 回答日時:
どの行でオーバーフローになるのでしょう?
Qchan1962さんも書かれてますが、そのコード自体には問題なさそうなんですよね
エラーが出たり出なかったり、という場合はシートやセルの状態に原因があったりするような気もします
または他のプロシージャが関係してたりとか、参照設定が問題だったりとか。
で、...Font.Color = -16776961 ってあまり見ない指定ですが何か理由ありますか?
RGB関数の戻り値って0~16777215 の範囲なので、16777216-16776961=255、を指定してるのと同じですよね
定数vbRedでもいいですし
あと関係ないと思いますが
> Dim pink As Long
RGB関数の戻り値がLong型なので全然問題ないのですが
オブジェクトブラウザで見ると実はInterior.ColorプロパティってVariant型なんですね
ただし
Dim pink As Variant で受けてみると Variant/Double、内部処理形式DoubleのVariant型ってやつですね
この辺りはあまり気にしなくていいですがColorプロパティに合わせるんだったら
Dim pink As Variant がベターなのかな
No.1
- 回答日時:
>AF以外全く同じコードを使用している部分ではエラーが起こりません。
つまり、Cells(i, "AF").Font.Color = -16776961 ここがオーバーフローするのですか?
-16776961これ赤だったかと思いますが、
当てずっぽで申し訳ありませんが、RGB関数やColorIndexなどを使用してもダメでしょうか?
Cells(i, "AF").Font.Color =RGB(255, 0, 0)
Cells(i, "AF").Font.ColorIndex = 3
また、.Interior.Colorですが、条件書式などで色付けされたセルの色では?
その場合、.DisplayFormat.Interior.Colorになりますね。
ただ、コードを見る限り私には、エラー要因を見つけられませんです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Excel(エクセル) R列の1111/11/11以外、且つQ列の×の条件で該当行のAからAE列までオレンジに塗りつぶす 2 2022/07/02 10:18
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで最後の行を固定
-
特定の文字がある行以外を削除...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル マクロ オートフィ...
-
エクセル マクロで数値が変っ...
-
エクセルのマクロでゴールシー...
-
エクセルで特定の文字列が入っ...
-
AのセルとB行を比較して、一致...
-
エクセル 上下で列幅を変えるには
-
連続データが入った行の一番右...
-
[EXCEL]ボタン押す→時刻が表に...
-
Excelで非表示のセルをとばして...
-
OFFSETで、基準セルを可変にし...
-
【EXCEL】連続データの個数を抽...
-
VBA 曜日に色がついている列は...
-
エクセルVBA:リストに登録した...
-
Excelのフィルター後の一番上の...
-
Excelで結合されたセルの間に列...
-
excel 小さすぎて見えないセル...
-
結合されたセルをプルダウンの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字がある行以外を削除...
-
【Excel関数】UNIQUE関数で"0"...
-
エクセル 上下で列幅を変えるには
-
[EXCEL]ボタン押す→時刻が表に...
-
Excelのフィルター後の一番上の...
-
エクセルで特定の文字列が入っ...
-
excelのデータで色つき行の抽出...
-
エクセル マクロで数値が変っ...
-
Excel グラフのプロットからデ...
-
結合されたセルをプルダウンの...
-
エクセル マクロ オートフィ...
-
excel 小さすぎて見えないセル...
-
Excel ウインドウ枠の固定をす...
-
EXCELで最後の行を固定
-
電話番号の入力方式が違うデー...
-
エクセルVBA 最終行を選んで並...
-
エクセルのセルに指定画像(.jpg...
-
エクセル 時間の表示形式AM/PM...
-
連続データが入った行の一番右...
-
Excelで非表示のセルをとばして...
おすすめ情報
回答ありがとうございます!
デバッグでは、
If Cells(i, "A").Interior.Color = pink And _
Cells(i, "AD").Interior.Color = pink And _
Cells(i, "AF") = "" Then
の部分が黄色くなります。
赤色の部分をRGB関数等に書き換えてもダメでした…。
.Interior.Colorで参照先のセルの色がピンクでした!
勉強になります。ありがとうございます。
回答ありがとうございます!
デバッグでは、
If Cells(i, "A").Interior.Color = pink And _
Cells(i, "AD").Interior.Color = pink And _
Cells(i, "AF") = "" Then
のところが黄色くなります。
フォントカラーの指定は、録画機能で記録した値をそのままぶち込んでました…。
完全に独学なのでデータ型の使い分け等も何となくだったので勉強になります。
コードに問題がないとするとどういった状態の場合にオーバーフローが返ってきてしまうのでしょうか?どこに問題があるかおおよその検討の付け方等があれば教えていただきたいです…。