• 締切済み

VB6でユーザー定義型がNothingかどうか調べるには?

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

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

他の方の指摘にあるように ユーザー定義型は、値型なので、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 にするといいかもしれません。 (未初期化が有効な値を表す場合には使えません)

rough
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • teiou68k
  • ベストアンサー率28% (202/721)
回答No.2

私が知ってる限り、On Errorとかを使って・・・という無理矢理な方法しかないです。 そういうわけで私は 構造体(ユーザー定義型)→クラス 配列→コレクション を使ってます。

rough
質問者

お礼

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

すると、全ての回答が全文表示されます。
回答No.1

>ユーザー定義型がNothingじゃなかったら ユーザー定義型とは? Type ユーザー定義型  aaa as string bbb as integer end Type と宣言してあって、 Dim 変数 as ユーザー定義型 で変数がNothingであるかどうかを知りたいということ? Nothingはオブジェクトに対しての比較なので、単なる型で定義されている変数はNothingにしようがありません。 この場合、Typeで型を宣言するのではなく、クラスを作成したら、質問者さんの望む事が可能かと思います。

rough
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A