プロが教えるわが家の防犯対策術!

EXCELでVBAを使いアプリケーションを作っています。

今「このセルに何か入っている(何でも良い。とにかく空でない)場合、この処理」という意味のプログラムを書きたいのですが、「このセルに何か入っている場合」の部分がどうしてもわかりません。null、isnull、emptyなど片っ端から試してみたり、逆に問題のセルが空欄の時にfalseになる変数を前もって設定して、その変数がtrueの時に処理させようとしたりしてみたのですが、すべてうまく行きませんでした。

解決法を教えていただけたら幸いです。

A 回答 (5件)

#1>結合してあるセルを指定しているので


結合してあるセルの値は、左上のセルの値になります。
なので、
Set a = Range("A1:B1")
ではなくて
Set a = Range("A1")
のように指定してください。
    • good
    • 2
この回答へのお礼

ありがとうございます。

おっしゃる通りだったようです。

マクロの記録で罫線を引いていったら
Range("A1:B1").Select
というように記録されたので、
そう指定するものだとすっかり思い込んでいました。

VBAは難しいなぁ~。

お礼日時:2006/08/26 18:31

#4さんの言っているように、A1とB1が結合されているときはA1に値が入るので、下記のコードでよいと思います。


私が試してみた限りではうまくいきました。

If IsEmpty(Range("A1")) Then
MsgBox "AAA"
End If
    • good
    • 1
この回答へのお礼

ありがとうございます。

おっしゃるとおりです。こんなところでミスっていたとは。

マクロの記録で罫線を引いていったら
Range("A1:B1").Select
というように記録されたので、
そう指定するものだとすっかり思い込んでいました。

ありがとうございます。

おっしゃる通りだったようです。

マクロの記録で罫線を引いていったら
Range("A1:B1").Select
というように記録されたので、
そう指定するものだとすっかり思い込んでいました。

VBA難しいです。

お礼日時:2006/08/26 18:32

Dim r As Range


Set r = Range("A1")

If r.Value <> Empty Then
'処理
End If
では、だめですか?
上記の場合
A1
=""
の様な式が入力されている場合、入力があるとは検知されませんが、そういう場合のことなのでしょうか

この回答への補足

ありがとうございます。
一番目の方への回答とほぼ同じ内容をお答えする事になりますが、
おっしゃるとおりにやってみると、
If r.Value <> Empty Then
の部分が黄色反転で実行エラー13です。

私も、どこがいけないのかわかりません。

補足日時:2006/08/26 13:06
    • good
    • 0

IsBlank(対象セル)関数は使えませんか?

この回答への補足

ありがとうございます。

IsBlankは、EXCELのシート上で使う関数だと思っていました。
VBAで使う場合の例がちょっと見つからず、よくわかりませんでした。
ちなみに、今回のプログラムは、セルに何か入っていたら罫線を引くという性質のものなので、シート上での処理はできないと思います。

補足日時:2006/08/26 13:22
    • good
    • 0

条件を「セル<>""」としてできませんか?

この回答への補足

ありがとうございます。

私のつくっているものでは、結合してあるセルを指定しているので
Rangeを使っていますが、

If Range("A1:B1")<>"" then
'処理
Endif

とするとまず一行目が黄色反転で、実行エラー13。
変数の設定をしていないから怒られたのかなあと
変数設定をしてみて

Dim a As Range
Set a = Range("A1:B1")
If a.value <> "" Then
'処理
End If

としてみたのですが、
これもやっぱりIf a.value <> "" Thenが
黄色反転で実行エラー13です。

何がいけないのか、わからないのですが・・・。

補足日時:2006/08/26 13:05
    • good
    • 0

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

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


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