EMPTYと0の区別

解決


GG  2005-01-28 22:20:12  No: 119252

はじめまして
    VB6  SP6  で
    Doubleの変数で
      EMPTYと0の区別できる方法があれば教えて下さい?


魔界の仮面弁士  2005-01-28 22:41:33  No: 119253

Empty値を保存できるのは、Variant型だけです。
Double型に入れてしまうと、その時点で 0 に変換されてしまいます。

変換された後で判断する事はできませんから、変換前に判断してください。

で、Emptyかどうかを判断する方法は幾つかありますが、基本的には
  If IsEmpty(V) Then
もしくは、
  If VarType(V) = vbEmpty Then
のいずれかを使うのが良いでしょう。


G  2005-01-28 22:51:09  No: 119254

魔界の仮面弁士さん  ありがとうございます
Variant型で行うことにします

質問ですが
 If VarType(V) = vbEmpty Then

 If V = Empty Then

 If IsEmpty(V) Then

 If V = Empty Then

If IsEmpty(V) Then

If VarType(V) = vbEmpty Then

のそれぞれの違いを教えてもらいませんか


魔界の仮面弁士  2005-01-28 23:13:03  No: 119255

> If V = Empty Then
これでは駄目ですよ。

ヘルプを見ていただくとわかりますが、Empty は
「数値のゼロ」とも「長さゼロの文字列」とも一致する
特殊な値なのです。

つまり、
  Dim V As Variant
  V = Empty
  If (V = 0) Then
とか
  Dim V As Variant
  V = Empty
  If (V = "") Then
などのコードに対しては、いずれも True として扱われます。

ですから、「If V = Empty Then」という構文ですと、
Vが「Empty」の時だけではなく、「0」や「""」とも
一致してしまう事になります。

> If IsEmpty(V) Then
> If VarType(V) = vbEmpty Then
この2つは、動作的には一緒です。

IsEmpty()は、「Emptyかどうか」を True/Falseで返します。
一方の VarType() は、「データ型をあらわす値」を返します。

似た物として、TypeName()という「データ型を文字列で返す」関数もあります。
詳細はヘルプで確認してみてください。


GG  2005-01-29 01:24:07  No: 119256

魔界の仮面弁士  ありがとうございました
わかりました

たまたま見たソースに
つまり、テキストボックスの空欄チェックのところで
  IF  AAA.text=empty then
とあったにですが
  IF  AAA.text="" then
と同じで
String型だったのでIsEmptyでは、Falseになっていたと言うことですね

問いの部分と混同してました


GG  2005-01-29 01:26:00  No: 119257

解決チェックし忘れました


GG  2005-01-29 01:26:03  No: 119258

解決チェックし忘れました


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加