• ベストアンサー

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

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

No.2です。 >LenBではできないんでしょうか。 出来ないのではなく、意味がないんです。 Null値に対しては、「LenB(Null)」は「Null」になります。 したがって、 If IsNull(LenB(省略)) Then とすれば判別出来ますが、これが何の意味もないことはおわかりだと思います。 (わざわざLenBを通す必要性がまったくない) Len(LenB)関数は、文字列長という概念があるデータに対してのみ有効です。 (Null値には文字列長という概念がない) 素直にIsNull関数を使いましょう。 もちろん、Null値判定で、 If 値 = Null Then とするのは間違いですよ。

Lazio_ss
質問者

お礼

理解できました。 お忙しい中ご教授いただき、ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

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)
回答No.2

こんにちは。maruru01です。 Null値判定は、IsNull関数では? でも、そんなことより、No.1の方も指摘しているように、LenB関数はバイト数を返す関数だから、 比較は「=0」や「>0」では?

Lazio_ss
質問者

補足

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)
回答No.1

LenBは、バイト「数」ではないですか?