• ベストアンサー

VBAで「セルに何か入っている場合」

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

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

#1>結合してあるセルを指定しているので 結合してあるセルの値は、左上のセルの値になります。 なので、 Set a = Range("A1:B1") ではなくて Set a = Range("A1") のように指定してください。

noname#101292
質問者

お礼

ありがとうございます。 おっしゃる通りだったようです。 マクロの記録で罫線を引いていったら Range("A1:B1").Select というように記録されたので、 そう指定するものだとすっかり思い込んでいました。 VBAは難しいなぁ~。

その他の回答 (4)

回答No.5

#4さんの言っているように、A1とB1が結合されているときはA1に値が入るので、下記のコードでよいと思います。 私が試してみた限りではうまくいきました。 If IsEmpty(Range("A1")) Then MsgBox "AAA" End If

noname#101292
質問者

お礼

ありがとうございます。 おっしゃるとおりです。こんなところでミスっていたとは。 マクロの記録で罫線を引いていったら Range("A1:B1").Select というように記録されたので、 そう指定するものだとすっかり思い込んでいました。 ありがとうございます。 おっしゃる通りだったようです。 マクロの記録で罫線を引いていったら Range("A1:B1").Select というように記録されたので、 そう指定するものだとすっかり思い込んでいました。 VBA難しいです。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

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

noname#101292
質問者

補足

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

回答No.2

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

noname#101292
質問者

補足

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

回答No.1

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

noname#101292
質問者

補足

ありがとうございます。 私のつくっているものでは、結合してあるセルを指定しているので 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です。 何がいけないのか、わからないのですが・・・。

関連するQ&A