Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5878 / 13645 ツリー ←次へ | 前へ→

【48192】Dim宣言について VBA初心者 07/4/7(土) 16:48 質問[未読]
【48195】Re:Dim宣言について ウッシ 07/4/7(土) 22:41 発言[未読]
【48208】Re:Dim宣言について VBA初心者 07/4/8(日) 13:23 質問[未読]
【48209】Re:Dim宣言について ウッシ 07/4/8(日) 13:55 発言[未読]
【48211】Re:Dim宣言について VBA初心者 07/4/8(日) 19:01 お礼[未読]
【48423】Re:Dim宣言について VBA初心者 07/4/17(火) 4:02 質問[未読]

【48192】Dim宣言について
質問  VBA初心者  - 07/4/7(土) 16:48 -

引用なし
パスワード
   お世話になります。
VBAの本の中のユーザーフォームのイベントプロシージャーの中の変数の宣言で
(共通で使用する変数の宣言)で
Dim TBL(1 To 12) As Control と言う宣言があり、解説には「コントロールオブジェクトを格納する配列を、インデックス1〜12の範囲で宣言します」と書いてあります。
ヘルプでDimで調べてみたのですが、よく分かりません。
コード全体をみてもこの宣言以外ではControlと言う文字は出てきません。
これだけの文章ではわかりにくいかもしれませんが、宜しくお願いします。

【48195】Re:Dim宣言について
発言  ウッシ  - 07/4/7(土) 22:41 -

引用なし
パスワード
   こんばんは

ユーザーフォーム上のテキストボックス等のオブジェクト名を自分で変更してあって連番
で処理出来ないようなケースで、TBL(1)〜TBL(12)にそれらのテキストボックス等をセット
しておけば、

For i = To 12
  TBL(i) = Cells(i, 1).Value
Next

のように処理出来ます。他にも使い方は有るでしょうけど・・・?

コントロールオブジェクトはそのテキストボックス等の事で、フォームコントロールの事を
このケースでは指していると思います。

【48208】Re:Dim宣言について
質問  VBA初心者  - 07/4/8(日) 13:23 -

引用なし
パスワード
   ▼ウッシ さん
早速の回答ありがとうございました。確かにおっしゃられるとおり12のテキストボックスのオブジェクト名を変更してあり、Set TBL(1)=Text社員ID のように使っています。
Dimステートメントを調べてみると
Dim[WithEvents]varname[([subscripts])][As[New]type]
[,[WithEvents]varname[([subscripts])][As[New]type]...
とありますが、このControlと言うのはtypeのユーザー定義型なのでしょうか?
何度もすいません。解りましたらご回答お願いいたします。

【48209】Re:Dim宣言について
発言  ウッシ  - 07/4/8(日) 13:55 -

引用なし
パスワード
   こんにちは

>このControlと言うのはtypeのユーザー定義型なのでしょうか?
違いますよね?

typeというのはヘルプの通りユーザー定義型も含めた変数の型です。

Controlと言うのはその中のオブジェクト型で、「オブジェクト型 (Object) の
オブジェクト変数は、プロシージャを実行するまでオブジェクト型 (Object)
が特定できない場合に使用します。」という事なので、今回の場合はプロシージャ
を実行する前にControlと特定出来ているので、typeを「Control」としている
のでは?

>Dim TBL(1 To 12) As Control

自信無し。

【48211】Re:Dim宣言について
お礼  VBA初心者  - 07/4/8(日) 19:01 -

引用なし
パスワード
   ▼ウッシ さん:
こんばんわ。ウッシさん回答ありがとうございました。
コードそのほかの内容が全部解らないので、回答も難しいかと思います。
私も初心者ですので、解らないことが多くてすいません。
VBAの本のサポートセンターが書いてあったので、そちらにも聞いてみます。
また結果は報告いたします。
ありがとうございました。

【48423】Re:Dim宣言について
質問  VBA初心者  - 07/4/17(火) 4:02 -

引用なし
パスワード
   皆さんこんばんは。VBA初心者です。
サポートセンターから答えが返って来ました。
(回答)「Dim TBL As Control」とは変数TBLをコントロール(Control オブジェクト)で宣言するという意味です。
「As Control」は総称といえるもので、実際に「Control型」のクラスがあるわけではありません。
実際に作成できるのは(変数に格納できるのは)『コントロール「TextBox」』などのインスタンスになります。
事前に使用するコントロールがわかっている場合(使用するコントロールが決まっている場合)は、「Dim A As TextBox」といった構文を記述しますが、本書のサンプルでは、ユーザーフォームで各種のコントロールを使うことから、VBAプログラムの最初に、
  共通で使用する変数の宣言として「Dim TBL As Control」という記述を行っています。-----------------とのことでした。

ここでまた質問なのですが、object型で名前を任意に変えることができるのでしょうか?どなたかよろしくお願いします。

5878 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free