前提・実現したいこと
初めて投稿します。
Excel VBAについて質問です。
現在、依存の標準モジュールをクラスモジュールに書き換えています。
あるインスタンスをExcelの1つのブックの起動から終了まで生存させたいのですが、
どのようにしたら良いのでしょうか。
そのインスタンスが保持しているメンバ変数やメンバメソッドを
ブックが開いている間、常にそれらを使用したいと考えています。
適当なサンプルコードを提示頂けたら、幸いです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
クラスについては理解できているとして、
そのインスタンスが保持しているメンバ変数やメンバメソッドを
ブックが開いている間、常にそれらを使用したいと考えています。
標準モジュールにPublicで宣言したのと同様に、ブックが開いている間中どこからでもいつでも使用したいということなら、
標準モジュールの宣言部でPublicでインスタンスを生成すればいいでしょう。
下記のようにNewステートメントを付加すると宣言と同時にインスタンスを生成します。
標準モジュール
vba
1Option Explicit 2 3Public cls1 As New Class1
クラスモジュール クラス名 Class1
vba
1Option Explicit 2 3Public X As Long 4Public Y As Long 5Public Z As Long 6 7Public Function GetSum() As Long 8 GetSum = X + Y + Z 9End Function
例えばユーザーフォームから呼び出す場合
vba
1Private Sub CommandButton1_Click() 2 3 cls1.X = 1 4 cls1.Y = 2 5 cls1.Z = 3 6 7End Sub 8 9Private Sub CommandButton2_Click() 10 11 Debug.Print "Xは" & cls1.X & "、Yは" & cls1.Y & "、Zは" & cls1.Z 12 Debug.Print "合計は" & cls1.GetSum 13 14End Sub 15 16
投稿2021/06/08 07:28
総合スコア34075
0
クラスモジュールをClassと言う名称で作成して、ソースをコピペして下さい。
Testを動かすとクラスの感じが掴めると思います。
(標準モジュール)
VBA
1Sub Test_Sample_Miniature() 2 'クラス定義 3 Dim ClassX As Class 4 Dim ClassY As Class 5 'オブジェクト作成 6 Set ClassX = New Class 7 Set ClassY = New Class 8 '実行処理 9 ClassX.glng数値X = 1500 10 ClassX.glng数値Y = 100 11 ClassX.gstr名称 = "ClassX" 12 ClassX.計算処理 13 ClassY.glng数値X = 12300 14 ClassY.glng数値Y = 10000 15 ClassY.gstr名称 = "ClassY" 16 ClassY.計算処理 17 MsgBox ClassX.gstr名称 & "と" & _ 18 ClassY.gstr名称 & "の合計は" & _ 19 Format(ClassX.glng数値Z + ClassY.glng数値Z, "#,##0") 20 '終了 21 Set ClassX = Nothing 22 Set ClassY = Nothing 23End Sub
(Classモジュール)名称Class
VBA
1'プロパティ実装 2Public glng数値X As Long 3Public glng数値Y As Long 4Public glng数値Z As Long 5Public gstr名称 As String 6'クラス変数実装 7Dim lngWORK As Long 8'関数実装 9Function 計算処理() 10 lngWORK = glng数値X * glng数値Y 11 glng数値Z = lngWORK 12 MsgBox Trim(gstr名称) & "クラスで計算しました = " & Format(lngWORK, "#,##0") 13End Function
投稿2021/06/08 06:36
総合スコア553
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/08 07:59
2021/06/08 08:34
2021/06/09 00:16