はじめまして
VB6 SP6 で
Doubleの変数で
EMPTYと0の区別できる方法があれば教えて下さい?
Empty値を保存できるのは、Variant型だけです。
Double型に入れてしまうと、その時点で 0 に変換されてしまいます。
変換された後で判断する事はできませんから、変換前に判断してください。
で、Emptyかどうかを判断する方法は幾つかありますが、基本的には
If IsEmpty(V) Then
もしくは、
If VarType(V) = vbEmpty Then
のいずれかを使うのが良いでしょう。
魔界の仮面弁士さん ありがとうございます
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
のそれぞれの違いを教えてもらいませんか
> 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()という「データ型を文字列で返す」関数もあります。
詳細はヘルプで確認してみてください。
魔界の仮面弁士 ありがとうございました
わかりました
たまたま見たソースに
つまり、テキストボックスの空欄チェックのところで
IF AAA.text=empty then
とあったにですが
IF AAA.text="" then
と同じで
String型だったのでIsEmptyでは、Falseになっていたと言うことですね
問いの部分と混同してました
解決チェックし忘れました
解決チェックし忘れました
ツイート | ![]() |