クラス内メソッド使用時のエラーを回避するには?

解決


−TAKASHI−  2005-02-04 20:50:22  No: 119436

はじめまして、−TAKASHI−と申します。
もともとC++上がりで、現在はVBで開発を行なっています。

早速ですが、既存システム(VB)のクラス化を図ろうとし
サンプル的に簡単なクラスモジュールを作成したのですが
何が悪いか、アプリ側から呼び出す際に以下のようなエラーが
表示されてしまいます。

"実行時エラー '91':"
"オブジェクト変数または Withブロック変数が設定されていません。"

ソース自体は至って簡単なものなのですが、ご指摘頂けるとありがたいです。

----- クラスモジュール -----
#クラス名(オブジェクト名):ViewUnit

Option Explicit

'-----------------------------------------------------------------
'   基本クラス: ViewUnit
'   メソッド名: EnvInit
'   属      性: Public(外部CALL)
'   概      要: 帳票出力に関する環境初期化
'   引      数: strPath        ... 帳票ファイル読込みPATH
'              strPrinterName ... 出力先プリンタ−名称
'   戻      値: TRUE/FALSE     ... 環境初期化成功/環境初期化失敗
'-----------------------------------------------------------------Public Function EnvInit(strCoPath As String, strPrinterName As String) As Boolean

    EnvInit = True

End Function

----- 呼び出し側 Form内ソース -----
Option Explicit

Private Sub Command1_Click()
    Dim output As ViewUnit
    
    If output.EnvInit(" ", " ") = False Then
        MsgBox "出力環境の初期化に失敗しました."
    End If
    
End Sub

よろしくお願い致します。


LESIA  2005-02-04 21:01:39  No: 119437

クラスはインスタンスを作成しないと使えませんよ。
Dim output As ViewUnit
の後に
Set output = New ViewUnit
を追加してください。

あと、EnvInitの宣言行がコメントになってませんか?


−TAKASHI−  2005-02-04 21:37:44  No: 119438

LESIAさん、早速のご回答ありがとうございます。

>Set output = New ViewUnit
すいません、インスタンスの生成を忘れてました(^^;
ちなみに 宣言時で Dim output As New ViewUnit でも可能ということも
わかりました。  ありがとうございます。

>あと、EnvInitの宣言行がコメントになってませんか?
ソースを掲示板にコピーした際に、こちらの不手際でコメントのように
見えますが、実際はコメントされていません(改行されています)
紛らわしくなってしまいました・・・申し訳ありません。。

また、宜しくお願い致します。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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