アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6でユーザー定義型がNothingじゃなかったら~処理~をするという事をしたいのですが
下記のように書くと「型が一致しません。」のエラーが出ます。
If Not ユーザー定義型 Is Nothing Then
~処理~
End If
どのようにしたらユーザー定義型がNothingかどうか見分けられるのでしょうか?

A 回答 (3件)

>ユーザー定義型がNothingじゃなかったら



ユーザー定義型とは?

Type ユーザー定義型
 aaa as string
bbb as integer
end Type
と宣言してあって、
Dim 変数 as ユーザー定義型
で変数がNothingであるかどうかを知りたいということ?

Nothingはオブジェクトに対しての比較なので、単なる型で定義されている変数はNothingにしようがありません。

この場合、Typeで型を宣言するのではなく、クラスを作成したら、質問者さんの望む事が可能かと思います。
    • good
    • 0
この回答へのお礼

いろいろやってみてたらよくわからないけど、
↓のようにすると望んだように動いてくれました。
If Not Not ユーザー定義型 Then
~処理~
End If
回答ありがとうございました。

お礼日時:2006/06/23 10:42

私が知ってる限り、On Errorとかを使って・・・という無理矢理な方法しかないです。



そういうわけで私は

構造体(ユーザー定義型)→クラス
配列→コレクション

を使ってます。
    • good
    • 0
この回答へのお礼

いろいろやってみてたらよくわからないけど、
↓のようにすると望んだように動いてくれました。
If Not Not ユーザー定義型 Then
~処理~
End If
回答ありがとうございました。

お礼日時:2006/06/23 10:42

他の方の指摘にあるように


ユーザー定義型は、値型なので、Nothing には、なりません。
くだらない例ですが
Type MyType
a As String
b As Integer
End Type

Public MyNothing As MyType '値が未設定な状態(デフォルト初期化状態)

Public Sub test()
Dim a As MyType
If a.a = MyNothing.a And a.b = MyNothing.b Then
MsgBox "yes"
End If
End Sub
みたいにすればどうでしょう。
メンバがそれぞれ未初期化のものと同じであるかどうかは、function にするといいかもしれません。
(未初期化が有効な値を表す場合には使えません)
    • good
    • 0
この回答へのお礼

いろいろやってみてたらよくわからないけど、
↓のようにすると望んだように動いてくれました。
If Not Not ユーザー定義型 Then
~処理~
End If
回答ありがとうございました。

お礼日時:2006/06/23 10:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A