dポイントプレゼントキャンペーン実施中!

質問しつれいします。

エクセルVBAでマクロを作っているのですが、
分からないところがあるのでご指導の程お願いしたいです。
テキストボックスを複数つくり、それに順に値を
当てはめていくのですが、それを一つのループでしたいと
考えています。
例えば、text1というオブジェクト名のテキストボックスに
text1.value = ○○
という風に、text20まで数字の部分だけ変えてループ関数で値を当てはめていきたいのですが、どうすればいいか分かりません。
変数に"text"という文字列と数字部分を結合したものをあてはめて
数字部分だけループ時に加算していき、
変数.value = ○○
という形で実現したいと思い色々試してみましたが、エラーが出てうまくできません。
わかる方がいらっしゃいましたら是非お教え願えませんでしょうか。

お願いいたします。

A 回答 (4件)

おはようございます。



こんな感じでしょうか。
Dim wI     As Integer
For wI = 1 To 20
  Controls("Text" & wI).Text = ○○
Next
    • good
    • 0
この回答へのお礼

回答ありがとうございます^^
VBA初心者なので簡潔な記述はすごく助かります><
ありがとうございました!

お礼日時:2007/06/30 19:51

こんにちは。



テキストボックス って何でしょうか?

Excelでは、テキストボックス と言われても、3つもあるので、それを特定できないと思います。

なお、このように数字によるループは、確実に、自分で設計した場合に限ります。そうでなければ、#3 さんのような、For Each ~ In スタイルにしたほうが安全です。


Sub TestOleObjects()
'コントロールツール
Dim i As Integer
With ActiveSheet
For i = 1 To 20
 .OLEObjects("TextBox" & i).Object.Value = i
Next i
End With
End Sub

Sub TestSpes()
'オートシェイプ
Dim i As Integer
With ActiveSheet
For i = 1 To 20
 .Shapes("Text Box " & i).DrawingObject.Text = i
Next i
End With
End Sub

'ユーザーフォームモジュール
Private Sub CommandButton1_Click()
'ユーザーフォーム
Dim i As Integer
For i = 1 To 20
 Me.Controls("TextBox" & i).Text = i
Next
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます^^
わかりにくい記述で申し訳ございません><
それぞれのパターンで丁寧に記述していただき助かります。
今後の参考にさせて頂きます!
ありがとうございました^^

お礼日時:2007/06/30 20:04

Sub test04()


i = 1
Dim ct As Object
For Each ct In ActiveSheet.OLEObjects 'Shapes
MsgBox ct.Name
ct.Object.Value = Cells(i, "A")
ct.Object.BackColor = RGB(255, 255, 0)
i = i + 1
Next
End Sub
そのシートのA列にテキストがセットされているとした場合の例。
テスト済み。2002.
    • good
    • 0
この回答へのお礼

回答ありがとうございます^^
VBA初心者なのでちょっとわからない記述がありますが
今後の参考にさせて頂きます^^
ありがとうございました!

お礼日時:2007/06/30 19:52

このHPが参考になると思います。



http://www2.moug.net/bbs/exvba/20070628000025.htm
    • good
    • 0
この回答へのお礼

お早い回答ありがとうございます^^
こんなサイトがあったのですね。
参考にさせて頂きます。ありがとうございました^^

お礼日時:2007/06/30 19:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!