- ベストアンサー
VBAで「セルに何か入っている場合」
EXCELでVBAを使いアプリケーションを作っています。 今「このセルに何か入っている(何でも良い。とにかく空でない)場合、この処理」という意味のプログラムを書きたいのですが、「このセルに何か入っている場合」の部分がどうしてもわかりません。null、isnull、emptyなど片っ端から試してみたり、逆に問題のセルが空欄の時にfalseになる変数を前もって設定して、その変数がtrueの時に処理させようとしたりしてみたのですが、すべてうまく行きませんでした。 解決法を教えていただけたら幸いです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#1>結合してあるセルを指定しているので 結合してあるセルの値は、左上のセルの値になります。 なので、 Set a = Range("A1:B1") ではなくて Set a = Range("A1") のように指定してください。
その他の回答 (4)
- kabilunlun
- ベストアンサー率34% (155/446)
#4さんの言っているように、A1とB1が結合されているときはA1に値が入るので、下記のコードでよいと思います。 私が試してみた限りではうまくいきました。 If IsEmpty(Range("A1")) Then MsgBox "AAA" End If
お礼
ありがとうございます。 おっしゃるとおりです。こんなところでミスっていたとは。 マクロの記録で罫線を引いていったら Range("A1:B1").Select というように記録されたので、 そう指定するものだとすっかり思い込んでいました。 ありがとうございます。 おっしゃる通りだったようです。 マクロの記録で罫線を引いていったら Range("A1:B1").Select というように記録されたので、 そう指定するものだとすっかり思い込んでいました。 VBA難しいです。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
Dim r As Range Set r = Range("A1") If r.Value <> Empty Then '処理 End If では、だめですか? 上記の場合 A1 ="" の様な式が入力されている場合、入力があるとは検知されませんが、そういう場合のことなのでしょうか
補足
ありがとうございます。 一番目の方への回答とほぼ同じ内容をお答えする事になりますが、 おっしゃるとおりにやってみると、 If r.Value <> Empty Then の部分が黄色反転で実行エラー13です。 私も、どこがいけないのかわかりません。
- kabilunlun
- ベストアンサー率34% (155/446)
IsBlank(対象セル)関数は使えませんか?
補足
ありがとうございます。 IsBlankは、EXCELのシート上で使う関数だと思っていました。 VBAで使う場合の例がちょっと見つからず、よくわかりませんでした。 ちなみに、今回のプログラムは、セルに何か入っていたら罫線を引くという性質のものなので、シート上での処理はできないと思います。
- Ekukos_bloomers
- ベストアンサー率15% (19/123)
条件を「セル<>""」としてできませんか?
補足
ありがとうございます。 私のつくっているものでは、結合してあるセルを指定しているので 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です。 何がいけないのか、わからないのですが・・・。
お礼
ありがとうございます。 おっしゃる通りだったようです。 マクロの記録で罫線を引いていったら Range("A1:B1").Select というように記録されたので、 そう指定するものだとすっかり思い込んでいました。 VBAは難しいなぁ~。