@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Excel VBA での値判断について

投稿者投稿内容
erikun
常連さん
会議室デビュー日: 2003/10/10
投稿数: 32
投稿日時: 2008-09-19 11:20
セルに入力規則でリストボックスを作成しました。
(リストボックスの中は1〜4の数字です。)
入力規則で、空白を許可しています。

このセルが空白の時、値は何がはいるのでしょうか?

Nullだと思い、セルの値 = Nullか?というIf文で処理を行っているのですが、
この条件文だと、Elseへいってしまいます。

今度は、変数をStringで作って、
セルの値を変数へセットして、変数の値 = Nullか?とすると、
コンパイルエラーになり、型が一致しないといわれてしまいます。

知っている方がいらっしゃったら、教えてください。
よろしくお願いいたします。


こあら
大ベテラン
会議室デビュー日: 2007/06/26
投稿数: 157
投稿日時: 2008-09-19 11:55
ステップ実行で、if文通過時のセルの値を調べることができます。
ツールチップヒント(名前が違うかも)やウォッチ式を使います。
D.Matsu
ベテラン
会議室デビュー日: 2006/12/07
投稿数: 51
投稿日時: 2008-09-19 12:29
値が何か、という質問への回答ではありませんが……

引用:

erikunさんの書き込み (2008-09-19 11:20) より:
Nullだと思い、セルの値 = Nullか?というIf文で処理を行っているのですが、



セルが空かどうかの判断にはIsEmpty()を使います。

引用:

セルの値を変数へセットして、変数の値 = Nullか?とすると、



Nullかどうかの判断にはIsNull()を使います。
erikun
常連さん
会議室デビュー日: 2003/10/10
投稿数: 32
投稿日時: 2008-09-19 12:50
D.Matsuさん。

ありがとうございます。

Nullかどうかの判断にはIsNull()を使います。
→これも試してみたんですが、だめでした。

セルが空かどうかの判断にはIsEmpty()を使います。
→こちらには気がつきませんでした。
 こちらで判断してみます。

また、結果報告いたします。


こあらさん。

ありがとうございます。
えっと、ステップ実行しながら、ウォッチ式をみながらの
テストを実行しております。
それでも、わからず投稿させていただいた次第です。
erikun
常連さん
会議室デビュー日: 2003/10/10
投稿数: 32
投稿日時: 2008-09-19 13:23
セルが空かどうかの判断にはIsEmpty()を使います。
→使って実行してみましたが、だめでした。

ステップ実行しながら、変数にカーソルをあてると、
通常、枠の中に変数名とその値が表示されますが、
空の場合だけ、カーソルをあてても枠も出てこないんです。

ちなみに、リストボックスで数値を設定しているセルでカーソルをあてると
正常に枠が出て、値も表示されました。

こういう現象が起きております。

ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2008-09-19 13:51
引用:

erikunさんの書き込み (2008-09-19 13:23) より:

セルが空かどうかの判断にはIsEmpty()を使います。
→使って実行してみましたが、だめでした。

ステップ実行しながら、変数にカーソルをあてると、
通常、枠の中に変数名とその値が表示されますが、
空の場合だけ、カーソルをあてても枠も出てこないんです。

ちなみに、リストボックスで数値を設定しているセルでカーソルをあてると
正常に枠が出て、値も表示されました。

こういう現象が起きております。


IsEmpty を使ってみた時のコードを提示できますか?

リスト作成したセルを A1 とした場合、

Len(Worksheets("シート名").Range("A1").Value)

でどんな値が返ってきますか?
ゼロなら空白(空文字=""=Empty値)だと思うのですが。
こあら
大ベテラン
会議室デビュー日: 2007/06/26
投稿数: 157
投稿日時: 2008-09-19 13:58
おそらくウォッチ式を使えていないだけだと思いますが、あんまりひっぱるのもウザイので書いちゃいます。

コード:
if IsEmpty(Range("A1")) then

if Range("A1").Value = "" then

if Range("A1").Value = vbEmpty then


erikun
常連さん
会議室デビュー日: 2003/10/10
投稿数: 32
投稿日時: 2008-09-19 15:24
ひろれいさん。

Len(Worksheets("シート名").Range("A1").Value)
でどんな値が返ってきますか?
→空でしたのでEmptyのようです。


こあらさん。

コード記入をありがとうございます。

if Range("A1").Value = "" then

を使ってみましたら、条件が通りました。


皆様、ありがとうございました!!

スキルアップ/キャリアアップ(JOB@IT)