• 締切済み

visual basicのテキストボックスについて

ビジュアルベーシックでカレンダーを作ろうと考えてます。 日付のところをテキストボックスに数字を入れて、カレンダーに見立てようとしています。 でも、そのテキストボックスに値を代入するとき、一つ一つに textbox1.text=1 textbox2.text=2・・・・ と書いていくのはすごくメンドくさく、非効率的です。 今、自分が考えている解決方法は、javascriptにでてくるdocument.forms[0].elements[a].valueのようなテキストボックスなどの名前を指定しなくても値を代入する方法です。 でも、ビジュアルベーシックにこのような操作が可能なのかわかりません。 知っている方がいたら是非教えてください。

みんなの回答

  • take115
  • ベストアンサー率100% (1/1)
回答No.4

VB.net = 2002、2003 、2005 です 特に .net 1.0 とするとき vb2002、2003 .net 2.0 とするとき vb2005 を指します

noname#53923
質問者

お礼

わかりました。 ありがとうございます

  • take115
  • ベストアンサー率100% (1/1)
回答No.3

上でimogasiさんや、ape5さんがVB6.0のコントロール配列について説明してくださっていますが VB.NETでもコントロール配列を作成することができます      '変数宣言 Private textboxA() As System.Windows.Forms.TextBox    Private Sub ControleArray()     ’コントロール配列のインスタンスの作成及び要素の初期化 textboxA = New System.Windows.Forms.TextBox(30) {}     ’配列要素にすでにフォームに作成されているテキストボックスのインスタンスを代入 textboxA(0) = フォームに作成されたインスタンス名 ¨ End Sub で、実際に文字などを代入するときには    for i as integer = 0 to 30 textboxA(i).text = "テスト" next みたいにして代入できます。

noname#53923
質問者

補足

すいません。 VB2005の説明をお願いします

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

エクセルVBAにはないが、VB6.0などにはコントロール配列というのが有ります。 http://homepage1.nifty.com/rucio/main/shokyu/jugyou20.htm 、1つ配置してから、そのコントロールをコピーして貼り付けます。そうするとVBがコントロール配列にするかどうかきいてくるので はい と答えると自動的にIndexプロパティが設定されてコントロール配列になります。 ーー それと下記Addに関するVBでの方法を調べ、応用してみてください。 参考までに 手近なので、エクセルVBAでフォームの上に7列x5行のテキストボックスを作り Aから順に文字を入れていくのをやってみました。 Private Sub UserForm_Initialize() Dim txtbx As Control For i = 1 To 35 Set txtbx = UserForm1.Controls.Add("forms.textbox.1") MsgBox txtbx.Name With txtbx .Top = 10 + Int((i - 1) / 7) * 25 .Left = 10 + ((i - 1) Mod 7) * 30 .Height = 20 .Width = 20 End With Next i For i = 1 To 35 UserForm1.Controls("textbox" & i).Text = Chr(96 + i) Next i UserForm1.Show End Sub ●Controls("textbox" & i).Text = Chr(64 + i) の部分が、VBではUserform1.Textbox(i)のようにできるはずです。 ●UserForm1.Controls.Add("forms.textbox.1")の部分がVBでは違うはず。

  • ape5
  • ベストアンサー率57% (85/148)
回答No.1

カレンダーを作ろうとしていることでVB6.0であると見て話しを進めます。 VB6.0はしばらく触ってないのでうろ覚えですが、テキストボックスのオブジェクト名を全部同じtxtBoxなどにするとIndexの入力を要求されたような記憶があります。これはtxtBox(0),txtBox(1),txtBox(2),... txtBox(31)などの配列になります。 こうしておけば DIm i as integer for i = 0 to 31 txtBox(i).text = i next i として、初期化が単純化されるとおもいます。

関連するQ&A