- ベストアンサー
Excel VBAについてのマクロのエラー解決方法
- VBA初心者がExcelでマクロを作成しようとしたが、エラーが発生してうまくいかない。
- マクロの目的は、黄色で塗られたセルの右隣のセルに「○」を表示すること。
- エラーの原因を特定し、適切な修正方法を教えてほしい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
いくつか間違いがありますね。 まず、 Set A = Cells(i, 1) Set B = Cells(1, i) は間違いです。 これだと、Cells(i, 1)とCells(1, i)のセルに入っている値をAとBに代入してしまっているので、 Range(Cells(i, 1)の値)となってしまっているのでもちろんエラーになります。 また、Rangeの使い方ですが、Rangeは二つ以上のセルを含む範囲ではないとエラーになります。 つまりRange(Cells(i, 1))はエラーになってしまうと言うことです。 ひとつのセルを参照するなら、そのままCells(i.1)のみで良いです。 あと「セルの塗りつぶしが黄色で、かつ右隣のセルの塗りつぶしが赤」ということは 一つ目のセルがCells(i, 1)だとすると、その右隣のセルはCells(i, 2)になります。 Cells(1, i)じゃ全然違うセルを参照してしまいます。 あともう一つ、vbYellowやvbRedと一致させたいなら、ColorIndexではなくColorプロパティを使用する必要があります。 これらを総合すると、 Sub ather() Dim i As Integer With ThisWorkbook.Worksheets("Sheet1") For i = 1 To 30 If Not .Cells(i, 1).Interior.Color = vbYellow Then GoTo port10 If Not .Cells(i, 2).Interior.Color = vbRed Then GoTo port10 .Cells(i, 3).Value = "○" port10: Next i End With End Sub でOKということになります。 ご参考まで。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
マクロのご相談では,「どこ番地のセル」をキチンと明記します。 >イメージとしてはセルの塗りつぶしが黄色で、かつ右隣のセルの塗りつぶしが赤の時に、 A1:A30の範囲で,黄色のセルについて 隣のB列のセルが赤だったら 隣のC列のセルに○を記入する マクロにも幾つか間違いがあります。 参考にしてください: sub macro1() dim i as integer worksheets("Sheet1").select for i = 1 to 30 if cells(i, "A").interior.color = vbyellow then if cells(i, "B").interior.color = vbred then cells(i, "C") = "○" end if end if next i end sub