Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4158 / 13644 ツリー ←次へ | 前へ→

【58123】複数コンボボックスの変数繰り返し処理 新人総務 08/10/4(土) 17:22 質問[未読]
【58124】Re:複数コンボボックスの変数繰り返し処理 neptune 08/10/4(土) 17:38 回答[未読]
【58126】Re:複数コンボボックスの変数繰り返し処理 新人総務 08/10/4(土) 19:00 質問[未読]
【58127】Re:複数コンボボックスの変数繰り返し処理 新人総務 08/10/4(土) 20:13 お礼[未読]
【58129】Re:複数コンボボックスの変数繰り返し処理 neptune 08/10/4(土) 21:29 発言[未読]
【58130】Re:複数コンボボックスの変数繰り返し処理 新人総務 08/10/5(日) 12:12 お礼[未読]

【58123】複数コンボボックスの変数繰り返し処理
質問  新人総務  - 08/10/4(土) 17:22 -

引用なし
パスワード
   こんにちは。
表題の通りなのですが、UserForm2上に1-10個のComboBoxがあります。
このうち1-8個までに共通のリストを繰り返し処理で追加したいのですが・・・

Private Sub UserForm_Initialize()
 Dim X, Y As Integer
 Dim Z As Control
 Z = Me.Controls("ComboBox" & Y)
 Do While Y = 8
  For X = 0 To 7
   UserForm2.Z.AddItem Worksheets("Letter").Cells(X + 1, 10).Value
  Next
  Y = Y + 1
 Loop
End Sub

のようにしていますが、[UserForm2.Z.AddItem]でエラーがでて、どうにも
解決できません。
すみませんが、アドバイスお願いいたします。

【58124】Re:複数コンボボックスの変数繰り返し処理
回答  neptune  - 08/10/4(土) 17:38 -

引用なし
パスワード
   ▼新人総務 さん:
詳細までは見てませんが、ぱっと気が付くところだけ。

>Private Sub UserForm_Initialize()
> Dim X, Y As Integer
> Dim Z As Control
dim z as msforms.combobox
だと思いますが。。未検証です。

> Z = Me.Controls("ComboBox" & Y)
set Z = Me.Controls("ComboBox" & Y)
オブジェクト変数に参照を代入する場合はset が必要です。

※残念ながら勘でプログラムは書けません。文法に従いましょう。

【58126】Re:複数コンボボックスの変数繰り返し処理
質問  新人総務  - 08/10/4(土) 19:00 -

引用なし
パスワード
   ▼neptune さん:
早速のアドバイスありがとうございます。
ご指摘の通り半分勘で、残りはネット検索で覚えているもので・・・
で、↓のように訂正してみましたが
「メソッドまたはデータメンバがみあたりません」エラーが出て
どうにも自力解決できません。
すみませんが、再度アドバイス願います。

Private Sub UserForm_Initialize()
 Dim X, Y As Integer
 Dim CB As msforms.ComboBox
 Do While Y = 8
  Set CB = Me.Controls("ComboBox" & Y)
  For X = 0 To 7
   UserForm2.CB.AddItem Worksheets("Letter").Cells(X + 1, 10).Value
  Next
  Y = Y + 1
 Loop
End Sub

[UserForm2.]を外すとエラーは出ませんがコンボボックスに何も表示されません。

【58127】Re:複数コンボボックスの変数繰り返し処理
お礼  新人総務  - 08/10/4(土) 20:13 -

引用なし
パスワード
   Private Sub UserForm_Initialize()
 Dim X, No As Integer
 For No = 1 To 8
  For X = 0 To 7
   UserForm2.Controls("ComboBox" & No).AddItem Worksheets("Letter").Cells(X + 1, 10).Value
  Next
 Next
End Sub

で、できました。
neptune さんのヒントにより完成できたこと大変感謝いたします。
ありがとうございました。

【58129】Re:複数コンボボックスの変数繰り返し処理
発言  neptune  - 08/10/4(土) 21:29 -

引用なし
パスワード
   ▼新人総務 さん:
自力解決おめでとうございます。

が、わけがよ〜判りません。^ ^;
もう見ないかも判りませんが、一応書いておきます。

もし、
>Private Sub UserForm_Initialize()
がUserForm2のイベントプロシージャなら

>Private Sub UserForm_Initialize()
> Dim X, No As Integer
Dim CB As msforms.ComboBox

> For No = 1 To 8
Set CB = Me.Controls("ComboBox" & No)
↑が何を意味するかよ〜く考えて見ましょう。

>  For X = 0 To 7
   CB.AddItem Worksheets("Letter").Cells(X + 1, 10).Value
>  Next
> Next
>End Sub
Set CB = Me.Controls("ComboBox" & No)
の意味がわかれば↑でいけると思いますよ。

【58130】Re:複数コンボボックスの変数繰り返し処理
お礼  新人総務  - 08/10/5(日) 12:12 -

引用なし
パスワード
   ▼neptune さん:
ご親切にありがとうございます。
あれからComboBoxだけでなくTextBoxにもControls("TextBox"&No).Text
などとControlsを使用して何とか現在のやりたいことが完了しました。
ただ、Setについては???で腑に落ちない点が残っていました。
Setを使えばもっと簡略化OR処理速度向上?などと見当違いかも知れませんが
今後のスキルアップのためにもいろいろ調べて活用できるようしていきたいと
思います。

また今後とも、皆様宜しくお願いいたします。

4158 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free