
変数にコントロール型というものがあるのを見かけたことがあります。
しかしいざ使おうとすると、以下のようなエラーが発生します。
コントロール名を入れようとした場合
------> 型が一致しません
アクティブなコントロールを取得しようとした場合
-----> オブジェクト変数、または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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
ExcelVBAのコントロールの種類の取得方法
Visual Basic(VBA)
-
-
4
どこにもフォーカスを当てたくない
Access(アクセス)
-
5
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
6
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
7
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
8
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
9
オブジェクト型の変数にフォームを入れたい
Visual Basic(VBA)
-
10
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
11
MSFormsとは何ですか?
XML
-
12
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
13
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
14
エクセル・VBA CheckBoxのオブジェクト名に変数を使うことは可能でしょうか?
Excel(エクセル)
-
15
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
16
access テキストボックスの値取得
Access(アクセス)
-
17
EXCEL VBAのユーザーフォームに引数を渡す方法について
Excel(エクセル)
-
18
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
19
VBA基本構文の作り方 2列のリストボックスの昇順並び替え&列削除
Visual Basic(VBA)
-
20
ユーザーフォームで動的(Me.Controls.Add)に作成したコントロールの削除
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELでactivexコントロールを...
-
エクセルVBAでオプションボタン...
-
'ckbl' コントロールは作成され...
-
chr関数の呼び出しで「プロ...
-
カメラスクロールするのを動画...
-
vb.netで画面のコントロールId...
-
VBA ユーザーフォームの Keypre...
-
コントロールを移動できない
-
エクセル・VBA CheckBoxのオブ...
-
ExcelVBAでListViewが使用できない
-
STATICコントロール
-
チェックボックスをオンにした...
-
なかなか、Zオーダーが理解で...
-
全てのオブジェクトのプロパテ...
-
コントロールの絶対位置を取得...
-
vbaマクロで、色の設定ダイアロ...
-
VBAのカレンダーコントロールに...
-
DataGridView、1セルに複数コ...
-
ユーザコントロールでのEnterキ...
-
ExcelVBAのコントロールの種類...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELでactivexコントロールを...
-
エクセル・VBA CheckBoxのオブ...
-
カメラスクロールするのを動画...
-
エクセルVBAでオプションボタン...
-
チェックボックスをオンにした...
-
VBA ユーザーフォームの Keypre...
-
chr関数の呼び出しで「プロ...
-
'ckbl' コントロールは作成され...
-
ExcelVBAでListViewが使用できない
-
全てのオブジェクトのプロパテ...
-
vb.netで画面のコントロールId...
-
間違えて配置してしまったコン...
-
変数をコントロール型で使用す...
-
エクセル コントロールツール...
-
ユーザーフォームで動的(Me.Con...
-
OCXって何ですか?
-
C#で角が丸いテキストボックス
-
Groupboxの配下のコントロール...
-
Labelコントロールの(左右)余...
-
excel vbaでユーザーフォームに...
おすすめ情報