
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Visual Basic(VBA) WORD VBA プログラム修正をお願いします。 2 2024/04/25 23:43
- Excel(エクセル) VBA Private Sub Worksheet_Changeで 1 2024/05/01 16:59
- Visual Basic(VBA) Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです 3 2024/02/05 22:10
- Visual Basic(VBA) 以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが 1 2024/03/07 16:21
- Visual Basic(VBA) VBAに関して 2 2023/11/09 20:57
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) wordのマクロで思うように行きません(ファイル削除ができない) 3 2023/09/12 08:34
- Visual Basic(VBA) 重複確認 2 2024/06/30 12:17
- Excel(エクセル) エクセルで連勤チェックをしたいです。 7 2023/12/25 09:14
このQ&Aを見た人はこんなQ&Aも見ています
-
【マクロ】WEBシステムから保存ではなく、開いたExcelデータを変数に入れる事が出来る?
Excel(エクセル)
-
エクセルのdatedif関数を使って、年齢と月齢を入力しました。 関数を入力して、問題なく使えたので
Excel(エクセル)
-
【マクロ】アクティブセルの時間を別ブックから検索。見つかったセルを含めた最終行まで選択したい
Excel(エクセル)
-
-
4
ユーザーマクロ作成
Excel(エクセル)
-
5
【マクロ】Call関数で呼び出した場合、共通の変数宣言は、省略できますか?
Excel(エクセル)
-
6
【マクロ】参照渡しとモジュールレベル変数 どっちが よく使うものですか?
Excel(エクセル)
-
7
別のシートの指定列の最終行を返す関数の式を教えて下さい。
Excel(エクセル)
-
8
Excelの条件付書式について教えてください。
Excel(エクセル)
-
9
システムファイルについて
Excel(エクセル)
-
10
弥生青色申告オンライン .csvの取込エラー
Excel(エクセル)
-
11
【マクロ】データ移動について代替案(コード)or助言を下さい
Excel(エクセル)
-
12
【マクロ】コードを少しでも、減らする為には
Excel(エクセル)
-
13
【マクロ】条件付き書式設定をマクロ化するには?
Excel(エクセル)
-
14
列挿入をVBAで
Excel(エクセル)
-
15
【マクロ、画像あり】A表かB表かどちらか判断をして、処理をする
Excel(エクセル)
-
16
至急お願いします!エクセルのフィルターについて
Excel(エクセル)
-
17
VBA_日時のソート
Excel(エクセル)
-
18
【マクロ】上のデータに下のデータを、結合する
Excel(エクセル)
-
19
エクセルのマクロを記録して即実行したらエラー
Excel(エクセル)
-
20
エクセルに、105と入力すると、勝手に100で除算して1.05になってしまうのは何故でしょうか? ち
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FriendとPublicの違い。。。
-
VBA チェックボックスをオーバ...
-
既定のコンストラクタがない?
-
クラスのアドレスを引数として...
-
名前空間について
-
VB.NETでC#のイベントをオーバ...
-
VisualC++ドキュメント/ビュー...
-
MFCアプリのコマンドラインでパ...
-
C言語記述されたものをMFCに移植
-
イベントにAddHandlerされてい...
-
VBのシステムの設計書にUMLは適...
-
(UWSC) 「#32770」の意味わかり...
-
EXCEL VBAでのマッチング処理
-
ダイアログ表示時にチェックボ...
-
【ASP.NET】 独自で作成したク...
-
MFCのドラッグ&ドロップについて
-
ボタンのオーナードローについて
-
このコンパイルエラーの意味に...
-
DLLからEXEのクラスを呼び出す...
-
CMainFrameクラスなどのオブジ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA チェックボックスをオーバ...
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
イベントにAddHandlerされてい...
-
(UWSC) 「#32770」の意味わかり...
-
ボタンのオーナードローについて
-
MFCアプリのコマンドラインでパ...
-
ダイアログ表示時にチェックボ...
-
【ASP.NET】 独自で作成したク...
-
エディットコントロールでEnter...
-
MFCのドラッグ&ドロップについて
-
オーバーライド関数の呼び出し...
-
DataGridViewのセルに斜線を引...
-
MFCのCListCtrlでスクロールを検出
-
C++ protectedにアクセス不可
-
ダイアログクラスのコントロー...
-
クラスのアドレスを引数として...
-
エディットコントロールのイベ...
-
個々の関数について継承してい...
-
WindowsAPIのリストビューの...
おすすめ情報