■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#10223-0複数のテキストボックスに同じ値をいれたい匿名102232000-08-04(金) 12:02
     #10224-0RE#10223:複数のテキストボックスに同じ値をいれたいレベル102000-08-04(金) 12:30
     #10226-0RE#10223:複数のテキストボックスに同じ値をいれたい魔界の仮面弁士2000-08-04(金) 12:31
     #10228-0RE#10224:複数のテキストボックスに同じ値をいれたい魔界の仮面弁士2000-08-04(金) 12:39
#10223-0
複数のテキストボックスに同じ値をいれたい
複数のテキストボックスがあり、そのテキストボックスに同じ値をいれたいのです。
せっかくおぼえたので、ループをつかって処理をしようとコードを書いています。
しかしながら、うまくできません。『Str1.Text』の指定がひっかかっているようなのですが。
どなたかアドバイスの程、よろしくお願いいたします。
 
   Dim i As Integer
   Dim str1 As String
    
      For i = 0 To 15
            str1 = "text" & i
            str1.Text = "値"
      Next
#10224-0
RE#10223:複数のテキストボックスに同じ値をいれたい
> 複数のテキストボックスがあり、そのテキストボックスに同じ値をいれたいのです。
> せっかくおぼえたので、ループをつかって処理をしようとコードを書いています。
> しかしながら、うまくできません。『Str1.Text』の指定がひっかかっているようなのですが。
> どなたかアドバイスの程、よろしくお願いいたします。
>  
>    Dim i As Integer
>    Dim str1 As String
>     
>       For i = 0 To 15
>             str1 = "text" & i
>             str1.Text = "値"
>       Next
ざんねんながら、そういう指定方法は出来ません。
こういう場合は、「コントロール配列」を使います。
同じ名前のコントロールを作成すれば、配列にするかどうか聞いてきますので、
迷わず「はい」を選びましょう。

「Text」というテキストボックスがコントロール配列になっていると仮定して・・
For i = 0 To 15
    Text(i).Text = "値" 
Next
といった感じなります。

余談)
テキストボックスの数が15ではなく、不特定な場合、Text.Count で取得できます。
#10226-0
RE#10223:複数のテキストボックスに同じ値をいれたい
> 複数のテキストボックスがあり、そのテキストボックスに同じ値をいれたいのです。
> せっかくおぼえたので、ループをつかって処理をしようとコードを書いています。
> しかしながら、うまくできません。『Str1.Text』の指定がひっかかっているようなのですが。
それぞれのテキストボックスの名前を、同じ物にして下さい。
そうすることで、「コントロール配列」という物を作成できます。

これにより、各コントロールのIndexプロパティを使って、
   MsgBox Text1(0).Text
   MsgBox Text1(1).Text
のような書き方ができるようになるので、
>             str1.Text = "値"
これを、Text1(i).Text = "値" と書けるようになります。

もし、コントロール配列ではまずいようであれば、
Controlsコレクションを使って、指定することもできます。
また、VB6であれば、CallByName関数を使って指定することもできます。
#10228-0
RE#10224:複数のテキストボックスに同じ値をいれたい
> For i = 0 To 15
>     Text(i).Text = "値" 
> Next
> といった感じなります。
> 余談)
> テキストボックスの数が15ではなく、不特定な場合、Text.Count で取得できます。
# 上記の場合、TextBoxの数は 16 ですね。(^^;

余談の補足)
Countプロパティよりも、LBoundプロパティ/UBoundプロパティを使った方がよいでしょう。

ただし、コントロール配列のIndexプロパティというのは、いわゆる「欠番」を作ることが
できるので、その場合、For〜Nextでは 欠番のIndexにアクセスした時点でエラーになってしまいます。
その場合は、For〜Nextの代わりに、For Each〜Nextを使って、
    For Each Ctrl In Text1
        Ctrl.Text = "値"
    Next
のようにすると良いかと思います。
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)