
VBA チェックボックスをオーバーラップしたインスタンスのCaptionを出力したい
VBAの初心者で、勉強しています。最近ようやくクラスの定義方法が分かってきました、が深くは分かっていません。
次のようにクラスモジュール MyClass を作成しました。
------------------------- クラスモジュール MyClass --------------------------
Option Explicit
Private WithEvents myChkBox As MSForms.CheckBox
Public Sub SetCtrl(new_ctrl As MSForms.CheckBox)
Set myChkBox = new_ctrl
End Sub
Private Sub myChkBox_Click()
' クリックされたときの処理
End Sub
-------------------------------------------------------------------------------
次に、チェックボックスが配置されたUserFormのコードに
Set myCol = New Collection
Dim c As Control
Dim o As Variant
For Each c In Me.Controls
If TypeName(c) = "ChckBox" Then
Set o = New MyClass_ChkBox
Call o.SetCtrl(c)
myCol.Add o
Set o = Nothing ★今回の質問とは関係ありませんが、このNothingは必要ですか?
End If
Next
として、チェックボックスを先ほど定義したクラスでオーバーラップ(?)し、
コレクション myCol に格納しました。ここで myCol の内容を確認するために
For i = 1 To myCol.Count
Debug.Print TypeName(myCol.Item(i))
Next
とすると、TypeName は期待どおりに出力されました。
このとき、
Debug.Print myCol.Item(i).Caption
のようにして、キャプションをDebug出力したいのですが、エラーになってしまいます。
標準のチェックボックスには Caption というプロパティがあるかと思いますが、
オーバーラップすると、Caption は引き継がれないのでしょうか。
上手く質問内容を説明できているか分かりませんが、詳しい方がいましたら是非教えてください。
No.1ベストアンサー
- 回答日時:
自作クラス(MyClass)に以下を追加するとか。
property get Caption() as String
Caption = myChkBox.Caption
end property
回答ありがとうございます!
教えていただいたとおりに、ゲッターを記述したら、期待どおりにCaptionを表示することができました。Captionは継承されるけど、ゲッターを記述しないと取り出せないのですね。まだ、違和感があります(ゲッターを必要としなくてよいのではとも感じる???)が、実装ができてよかったです。
No.2
- 回答日時:
>Captionは継承されるけど、ゲッターを記述しないと取り出せないのですね。
そもそもVBAのクラスには、継承という差分プログラミング機能が無いという。
色々面倒なら、保持しているCheckBoxインスタンスをそのままパブリック扱いにするという手も。
継承が無いのですか!…意外です。
>色々面倒なら、保持しているCheckBoxインスタンスをそのままパブリック扱いにするという手も。
このことについて、お時間ありましたら詳しく教えてください。
※教えて!gooが終了というニュースを知り困惑しています。AIにはできない便利な財産だと思うので。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【マクロ】WEBシステムから保存ではなく、開いたExcelデータを変数に入れる事が出来る?
Excel(エクセル)
-
エクセルのdatedif関数を使って、年齢と月齢を入力しました。 関数を入力して、問題なく使えたので
Excel(エクセル)
-
【マクロ】アクティブセルの時間を別ブックから検索。見つかったセルを含めた最終行まで選択したい
Excel(エクセル)
-
-
4
ユーザーマクロ作成
Excel(エクセル)
-
5
Excelの条件付書式について教えてください。
Excel(エクセル)
-
6
【マクロ】Call関数で呼び出した場合、共通の変数宣言は、省略できますか?
Excel(エクセル)
-
7
システムファイルについて
Excel(エクセル)
-
8
【マクロ】参照渡しとモジュールレベル変数 どっちが よく使うものですか?
Excel(エクセル)
-
9
【マクロ、画像あり】A表かB表かどちらか判断をして、処理をする
Excel(エクセル)
-
10
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
11
至急お願いします!エクセルのフィルターについて
Excel(エクセル)
-
12
弥生青色申告オンライン .csvの取込エラー
Excel(エクセル)
-
13
条件付書式設定にて、本日の日付を条件として、2行分にセルに色を付けるには?
Excel(エクセル)
-
14
Excel 複数のセルが一致するときに網掛けをする式は作れますか
Excel(エクセル)
-
15
【マクロ】コードを少しでも、減らする為には
Excel(エクセル)
-
16
【マクロ】条件付き書式設定をマクロ化するには?
Excel(エクセル)
-
17
エクセルで同じブックを開くについて
Excel(エクセル)
-
18
エクセルのマクロを記録して即実行したらエラー
Excel(エクセル)
-
19
マクロOn Error GoTo ErrLabelとOn Error Resume Next教えて
Excel(エクセル)
-
20
9月17日でサービス終了らしいのですが、今までのようなエクセルの質問や相談はどこですればいい?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUP FALSEのこと
-
if関数の複数条件について
-
同じ名前(重複)かつ 日本 ア...
-
excel
-
【マクロ】数式を入力したい。...
-
表計算ソフトでの様式の呼称
-
空白のはずがSUBTOTAL関数でカ...
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ画像あり】❶1つの条件...
-
エクセルの文字数列関数と競馬...
-
【画像あり】【関数】指定した...
-
エクセルでフィルターした値を...
-
エクセルに写真が貼れない(フ...
-
エクセルのライセンスが分かり...
-
【関数】3つのセルの中で最新...
-
LibreOffice Clalc(またはエク...
-
【マクロ】excelファイルを開く...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ】既存ファイルの名前...
-
【マクロ】【画像あり】4つの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがない?
-
FriendとPublicの違い。。。
-
(UWSC) 「#32770」の意味わかり...
-
ダイアログ表示時にチェックボ...
-
イベントにAddHandlerされてい...
-
エディットコントロールでEnter...
-
オーバーライド関数の呼び出し...
-
このコンパイルエラーの意味に...
-
【ASP.NET】 独自で作成したク...
-
MFC モードレスDlgについて
-
[MFC] CWnd::MessageBoxの警告...
-
ボタンのオーナードローについて
-
MessageBoxを継承したい
-
ダイアログクラスのコントロー...
-
vba sendKeysを送る相手のソフ...
-
エディットコントロールのイベ...
-
Delphi6 DLL内でのメモリ共有(?)
-
個々の関数について継承してい...
-
privateなメンバ関数をテストす...
-
WindowsAPIのリストビューの...
おすすめ情報