- ベストアンサー
Excelからデータを取得する時の質問です。
どうかご教授ください。 Excelからデータを取得する時のセルの空白チェックを行なうのに、以下のようなPGを作成しました。 'ExcelRecはRecodesetです。 ..... ..... If LenB(ExcelRec.Fields(0)) = Null Then Exit Do End If ..... ..... バイトを見てNullだったら抜けるようにしたいのですがNullのデータにもかかわらずExit Doされません。 ちなみに、以下のような作りでもExit Doされません。 ..... ..... If LenB(ExcelRec.Fields(0)) <> Null Then Exit Do End If ..... ..... ご存知の方がいらっしゃいましたら、よろしくお願いいたします。 動作環境 WindowsXP,Vb6SP5,Office2000
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.2です。 >LenBではできないんでしょうか。 出来ないのではなく、意味がないんです。 Null値に対しては、「LenB(Null)」は「Null」になります。 したがって、 If IsNull(LenB(省略)) Then とすれば判別出来ますが、これが何の意味もないことはおわかりだと思います。 (わざわざLenBを通す必要性がまったくない) Len(LenB)関数は、文字列長という概念があるデータに対してのみ有効です。 (Null値には文字列長という概念がない) 素直にIsNull関数を使いましょう。 もちろん、Null値判定で、 If 値 = Null Then とするのは間違いですよ。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
VBAですが Sub test01() Dim cl As Range For Each cl In Range("a1:c5") If cl = "" Then Else MsgBox cl End If Next End Sub で未入力セルを飛ばして表示しました。 だからIf cl = "" ThenでVB(からエクセルへ来ている場合)でも、これでOKでしょう。 For Each cl In Range("a1:c5") If IsNull(cl) Then Else MsgBox cl End If Next では未入力セルもElseに行きました。再考を。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 Null値判定は、IsNull関数では? でも、そんなことより、No.1の方も指摘しているように、LenB関数はバイト数を返す関数だから、 比較は「=0」や「>0」では?
補足
Excelから取得してきたとき、Nullの場合は LenB(ExcelRec.Fields(0))としたときにはNullが入っています。 If LenB(ExcelRec.Fields(0)) = 0 Then Exit Do End If とした場合、LenB(ExcelRec.Fields(0)) はNullですのでExit Doされません。 はじめはIsNullでやってたんですが、LenBでもできると思い組み始めたところ、こんな状況になってしまいました。 LenBではできないんでしょうか。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
LenBは、バイト「数」ではないですか?
お礼
理解できました。 お忙しい中ご教授いただき、ありがとうございました。