
変数にコントロール型というものがあるのを見かけたことがあります。
しかしいざ使おうとすると、以下のようなエラーが発生します。
コントロール名を入れようとした場合
------> 型が一致しません
アクティブなコントロールを取得しようとした場合
-----> オブジェクト変数、またはWithブロック変数が設定されていません
ネットで使い方を検索しても上手くヒットしないので、大変恐縮なのですが
使い方を教えていただけませんでしょうか?
どのような使い方をすればよいかわかりません。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
dim XXX As CommandButton
Set XXX = CmdButn1
Form1上にCommandButtonであるCmdButn1が貼り付けられているならそれは可能です。
この例だと使い道が見えないと思うので、使い道を。
Form1上にコントロール配列のCommand(0)を貼り付けます。
Private Cmds(3, 5) As CommandButton
Private Sub Form_Load()
On Error Resume Next
Dim N As Long, M As Long, T As Long
For N = 0 To 2
For M = 0 To 4
T = N * 3 + M
Load Command(T)
Set Cmds(N, M) = Command(T)
Cmds(N, M).Left = N * 1500
Cmds(N, M).Top = M * 400
Cmds(N, M).Show
Next M
Next N
End Sub
こうすると、仮想2次元配列のコマンドボタンが出来上がります。
(動作確認してないです(汗))。
お返事、ありがとうございました。
わざわざ、サンプルコードもいただきまして
とても感謝いたします。
助かりました。ありがとうございました。
No.2
- 回答日時:
Control型というのは、型が特定できないようなコントロールを関数が受け取りたいとき、たとえば、コントロールは何でもいいがCaptionというプロパティを何かに設定したいようなときに使います。
Sub SetCaption(X As Control)
X.Caption = "なにか"
End Sub
Sub Form_Load()
SetCaption Command1
SetCaption Label1
End Sub
みたいな。
この場合、Control型でなくても、Object型やVariant型でも構いません。
単にControl型の変数を宣言しても、なんのコントロールかわからないし、どこにも配置されていないので、
オブジェクト変数、またはWithブロック変数が設定されていません
というメッセージが出るのです。
ちなみに、関数の引数として渡さない場合は、
Dim X As Control
Set X = Label1
などとすると、XがLabel1と同様にふるまうようになります。
XのCaptionを変更すると、Label1のCaptionが変更されるのです。
関数の引数として使う場合も、関数内で一時的に使う場合も、コントロールの型がわかっている場合は、明示的にそのコントロールの型で宣言してください。
Control型、Object型、Variant型は任意のコントロールやオブジェクトの参照を格納できますが、処理速度は非常に遅くなります。
それは、そのオブジェクト内のメソッドやプロパティにアクセスする場合、実行時に、そのオブジェクトの型を文字列を使って調べなければならないからです。
さらに、そのオブジェクトが指定されたメソッドまたはプロパティを持っているか、これもまた文字列を使って調べなければなりません。
明示的な型宣言をした場合、名前の解決はコンパイル時に行われるので、実行時にそれに時間を取られることはありません。
普通にプログラムをしていて、Control型に出会うことは、滅多にありません。
この回答への補足
ご丁寧なご説明ありがとうございます。
まことに恐縮ですが、質問させてください。
dim XXX As CommandButton
dim YYY As TextBox
等の場合も、Set XXX = CmdButn1
という風になるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) コントロールにリンクするセルが選択されない 3 2022/06/12 14:37
- Visual Basic(VBA) findメソッドの変数について 6 2023/06/23 08:01
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Visual Basic(VBA) VBAでWorkbook.addの使い方 3 2023/02/01 11:58
- Excel(エクセル) 【エクセル】COUNTIFの検索条件が可変する数字の場合の数式 1 2022/09/27 15:34
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- UNIX・Linux bash環境でのエラー対応をお願い致します。 1 2022/11/26 17:41
- Excel(エクセル) エクセルの印刷範囲をページ単位で可変にする方法 3 2022/05/23 13:04
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
このQ&Aを見た人はこんなQ&Aも見ています
-
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
ExcelVBAのコントロールの種類の取得方法
Visual Basic(VBA)
-
-
4
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
5
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
6
MSFormsとは何ですか?
XML
-
7
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
8
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
9
どこにもフォーカスを当てたくない
Access(アクセス)
-
10
オブジェクト型の変数にフォームを入れたい
Visual Basic(VBA)
-
11
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
12
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
13
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
-
14
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
15
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
16
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
17
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
18
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
19
access テキストボックスの値取得
Access(アクセス)
-
20
ユーザーフォームのSetFocusが働かない?
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
キンドルでの購入が親にバレな...
-
chr関数の呼び出しで「プロ...
-
カメラスクロールするのを動画...
-
データコンボボックスを連動さ...
-
VB.NETでフォーム上にエクセル...
-
VBA ユーザーフォームの Keypre...
-
Textbox
-
間違えて配置してしまったコン...
-
Excel VBA で Richtextboxを使...
-
ExcelVBAでListViewが使用できない
-
ユーザーフォームで動的(Me.Con...
-
エクセル IEをコピーし貼り付け...
-
データグリッドコントロールに...
-
vb.netで画面のコントロールId...
-
「HTML」で始まるオブジェクト...
-
EXCELでactivexコントロールを...
-
VBAでタブのページを削除す...
-
エクセル・VBA CheckBoxのオブ...
-
Labelコントロールの(左右)余...
-
ユーザーフォームを表示中にシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELでactivexコントロールを...
-
エクセル・VBA CheckBoxのオブ...
-
カメラスクロールするのを動画...
-
エクセルVBAでオプションボタン...
-
チェックボックスをオンにした...
-
VBA ユーザーフォームの Keypre...
-
chr関数の呼び出しで「プロ...
-
'ckbl' コントロールは作成され...
-
ExcelVBAでListViewが使用できない
-
全てのオブジェクトのプロパテ...
-
vb.netで画面のコントロールId...
-
間違えて配置してしまったコン...
-
変数をコントロール型で使用す...
-
エクセル コントロールツール...
-
ユーザーフォームで動的(Me.Con...
-
OCXって何ですか?
-
C#で角が丸いテキストボックス
-
Groupboxの配下のコントロール...
-
Labelコントロールの(左右)余...
-
excel vbaでユーザーフォームに...
おすすめ情報