変数にコントロール型というものがあるのを見かけたことがあります。
しかしいざ使おうとすると、以下のようなエラーが発生します。
コントロール名を入れようとした場合
------> 型が一致しません
アクティブなコントロールを取得しようとした場合
-----> オブジェクト変数、または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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
オブジェクト型の変数にフォームを入れたい
Visual Basic(VBA)
-
5
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
-
6
ExcelVBAのコントロールの種類の取得方法
Visual Basic(VBA)
-
7
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
8
UserForm1.Showでエラーになります。
工学
-
9
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
10
フォームのテキストボックスなどの変数名を標準モジュールから参照は可能か?
Visual Basic(VBA)
-
11
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
-
12
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
13
EXCEL VBA コンボボックス、テキストボックスが未入力のときメッセージを表示する方法
Excel(エクセル)
-
14
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
15
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
16
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
17
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
18
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
19
EXCELのコンボボックス 配置の縦位置の変更はどうすれば?
Windows Vista・XP
-
20
アクセスVBAのMe!と[ ]
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
(VBA)スピンボタンの大量...
-
変数をコントロール型で使用す...
-
With~EndWithの省略部分と引数...
-
VBAのエラーについて、”実行時...
-
コンボボックスの文字によるif...
-
ACCESS2010のVBAでフォーム内ク...
-
vb.netで画面のコントロールId...
-
VB6でシリアルポートの制御
-
シート上のコントロール(TextB...
-
[MFC]コントロールに合わせてフ...
-
行方不明のボタンを消したい
-
ユーザーフォームで動的(Me.Con...
-
'ckbl' コントロールは作成され...
-
ElementHostタスクにWPFが表示...
-
VB.NET 動的コントロールの存在...
-
WIN32でOCXを利用する方法を教...
-
Groupboxの配下のコントロール...
-
ListViewのチェックボックスに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
vb.netで画面のコントロールId...
-
エクセルVBAでオプションボタン...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
excelのリストボックスで選択し...
-
ユーザーフォームで動的(Me.Con...
-
フォーム上の現在アクティブな...
-
C#で自分のウインド・ハンド...
-
変数をコントロール型で使用す...
-
VBAのフォームでTextBoxがいっ...
-
コントロールを移動できない
-
Groupboxの配下のコントロール...
-
C#で角が丸いテキストボックス
-
(VBA)スピンボタンの大量...
-
間違えて配置してしまったコン...
-
エクセル コントロールツール...
-
'ckbl' コントロールは作成され...
-
OCXって何ですか?
おすすめ情報