教えて!gooにおける不適切な投稿への対応について

いつもお世話になっております。
今回の質問は、マクロである範囲が空白であるという条件を記載するのはどうすればよいかということです。
例えば、下のマクロは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

gooドクター

A 回答 (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
    • good
    • 3
この回答へのお礼

前回に引き続きお世話になりました。
悩んでいたことが解決しました。

お礼日時:2009/05/10 10:03

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

とか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
質問すると自分の知らない知識や考え方が増えるのでとても勉強になります。

お礼日時:2009/05/10 10:00

質問の条件をクリアするだけなら


一例です

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

参考程度に
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。
参考にさせていただきます。

お礼日時:2009/05/10 09:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング