2011-07-18 7 views
0

私はいくつかの問題があります...私はVBAの初心者です。 だから私はコンボボックスの束を持っている小さなアプリケーションを持っている...それらのほとんどは、Excelの範囲から同じ値を持っています。 だから私は小さなコードでコンボボックスの値を取得したいと、ここで、それはそれはMe.cbox.Valueが正しくないようです...問題はこの事がうまくいかないということです私の値を取得します。 For Eachループから

Dim rep As Range 
Dim cbox As Range 
Dim ws As Worksheet 
Dim ws2 As Worksheet 
Set ws = Worksheets("Sheet1") 
Set ws2 = Worksheets("Sheet2") 

For Each rep In ws.Range("Repere") 
    For Each cbox In ws2.Range("cboxs") 
    With Me.cbox.Value 
    .AddItem rep.Value 
    End With 
    Next cbox 
Next rep 

です。私がMe.cbox.Valueでしたいことは、Me.Combobox1、Me.Combobox2、Me.Combobox3などのようなものを持つことです...範囲cboxには、Comboboxesの名前が入ります... だから私は欲しいですすべてのコンボボックスでレンジ "Repere"からデータをロードする...(私はアプリで約40を持っています) ありがとう!

答えて

1

valueプロパティを使用しないでください。あなたはforループのコンボボックスのaddItemメソッドを使うつもりですが、Me.cbox.Valueでメソッドを呼び出そうとしています。それはする必要があります

For Each cbox In ws2.Range("cboxs") 
    Me.Controls(cbox.Value).AddItem rep.Value "<-----no need for the with bloc at all 
    End With 
Next cbox 

幸運!

+0

.Range( "cboxs")はコンボボックスの名前を含む範囲です。したがって、cbox変数は単に1つの名前を含むセルです。コンボボックス自体ではありません。 –

+0

私はおそらくゲイリーの形をしています。コントロール(cbox.value).additem repValueは正解です。私はまだWith Blockが間違っている、または不必要であると思う。 –

+0

素晴らしい!できます!あなたの答えをありがとう! –

0

お試しWith Me.Controls(cbox.Value)

関連する問題