• ベストアンサー

エクセルVBA オブジェクト名の変わりになる変数

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

質問者が選んだベストアンサー

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.2

おはようございます。 こんな感じでしょうか。 Dim wI     As Integer For wI = 1 To 20   Controls("Text" & wI).Text = ○○ Next

Errick
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 テキストボックス って何でしょうか? 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

Errick
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

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.

Errick
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • nekotaru
  • ベストアンサー率50% (22/44)
回答No.1

このHPが参考になると思います。 http://www2.moug.net/bbs/exvba/20070628000025.htm

Errick
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A