tagCANDY CGI VBレスキュー(花ちゃん) - コントロール名と配列(VB6.0) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
コントロール名と配列(VB6.0)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

コントロール名と配列(VB6.0) [No.80の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
日時: 2009/12/27 13:02
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[コントロール共通][基本コード][]                                  *
* キーワード:ループ処理,全てのコントロール,配列処理,同時処理,,                 *
***********************************************************************************

元質問:コントロール名と配列 - ゆーみん  2004/03/30-19:57 No.8542

Form1に
*Text1(0),Text1(1),Text1(2)
*Text2(0),Text2(1),Text2(2)
という6個のコントロールがあります。
これら全てに「AAA」という文字を入れたい場合、

For i = 0 To 2
   Form1.Text1(i).Text = "AAA"
Next i

とやりますよね。
この「Text1」と「Text2」もForNextでループ させたいのですが、わかりません。
「Form1.Controls(〜」とか、やるのかな? と考えたのですが、書き方が分かりません。
=============================================================
同様の質問をよく見かけますので掲載しておきます。
又、色々のパターンの回答をされているので他にも色々参考に
なると思います --- by 花ちゃん ---
=============================================================

------------------------------------------------------------------------------
Re: コントロール名と配列 - 魔界の仮面弁士  2004/03/30-20:10 No.8544
------------------------------------------------------------------------------

幾つかの手法が考えられます。



案1:
  'コントロール名はループさせない
  Dim i As Integer
  For i = 0 To 2
      Text1(i).Text = "AAA"
      Text2(i).Text = "AAA"
  Next


案2:
  '全コントロールを列挙し、コントロール名で判断
  Dim Ctrl As Control
  For Each Ctrl In Controls
      If Ctrl.Name Like "Text[12]" Then
          If Ctrl.Index = 0 Or Ctrl.Index = 1 Or Ctrl.Index = 2 Then
              Ctrl.Text = "AAA"
          End If
      End If
  Next


案3:
    'For Eachでコントロール配列の配列を列挙
    Dim TextBoxes As Variant
    Dim i As Integer
    For Each TextBoxes In Array(Text1, Text2)
        For i = 0 To 2
            TextBoxes(i).Text = "AAA"
        Next
    Next


案4:
    'Controlsコレクションにコントロール名を指定
    Dim num As Integer
    Dim i As Integer
    For num = 1 To 2
        For i = 0 To 2
            Controls("Text" & CStr(num))(i).Text = "AAA"
        Next
    Next

案5:
  '処理したいコントロールを集めたコレクション(または配列)を用意しておく
  Option Explicit
  Private MyTextBoxes As Collection
  Private Sub Form_Load()
      'コレクションとして登録しておく
      Set MyTextBoxes = New Collection
      MyTextBoxes.Add Text1(0)
      MyTextBoxes.Add Text1(1)
      MyTextBoxes.Add Text1(2)
      MyTextBoxes.Add Text2(0)
      MyTextBoxes.Add Text2(1)
      MyTextBoxes.Add Text2(2)
  End Sub
  Private Sub Command1_Click()
      '登録しておいたコレクションを使って処理
      Dim Txt As TextBox
      For Each Txt In MyTextBoxes
          Txt.Text = "AAA"
      Next
  End Sub
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ