- ベストアンサー
エクセルマクロで特定の範囲が空白という条件
いつもお世話になっております。 今回の質問は、マクロである範囲が空白であるという条件を記載するのはどうすればよいかということです。 例えば、下のマクロはA1からB2までの矩形の範囲が全くの空白であるときに、C3に3を入力するというつもりで作りましたが、 If a.Value = "" Then の行でエラーになるようです。 この空白の条件はどのように記載すればよろしいでしょうか。 Sub a() Dim a As Range Set a = Range(Cells(1, 1), Cells(2, 2)) If a.Value = "" Then Cells(3, 3) = 3 End If
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >If a.Value = "" Then の行でエラーになるようです。 これは、a が、a.Value になると、内部が配列構造になって、直接、値の比較は取れません。 厳密には、以下は、""(長さ0の文字列)の比較とは違います。これは、CountBlank とも差がありません。 Sub Test1a() Dim rng As Range Set rng = Range("A1:B2") If WorksheetFunction.CountA(rng) = 0 Then Cells(3, 3).Value = 3 End If Set rng = Nothing End Sub
その他の回答 (2)
- n-jun
- ベストアンサー率33% (959/2873)
CountBlank関数を用いて Sub a_2() Dim a As Range Set a = Range(Cells(1, 1), Cells(2, 2)) If Application.CountBlank(a) = a.Cells.Count Then Cells(3, 3) = 3 End If End Sub とか?
お礼
ご回答ありがとうございました。 質問すると自分の知らない知識や考え方が増えるのでとても勉強になります。
- hige_082
- ベストアンサー率50% (379/747)
質問の条件をクリアするだけなら 一例です Sub a() Dim a As Range For Each a In Range(Cells(1, 1), Cells(2, 2)) If a.Value <> "" Then Exit Sub Next a Cells(3, 3) = 3 End Sub Sub a1() Dim i As Long Dim a As String i = Range(Cells(1, 1), Cells(2, 2)).Count a = Range(Cells(1, 1), Cells(2, 2)).Address If Evaluate("COUNTBLANK(" & a & ")") = i Then Cells(3, 3) = 3 End Sub 参考程度に
お礼
早速のご回答ありがとうございました。 参考にさせていただきます。
お礼
前回に引き続きお世話になりました。 悩んでいたことが解決しました。