2016-09-05 6 views
0

朝!関数呼び出しでさまざまなコンボボックスを実装する

私はしかし、私はこれを行うにはトラブルと思い、様々なコンボボックスを移入するための関数を使用して、私のコードは、より汎用的にするためにしようとしている...ユーザーフォームで

Private Sub UserForm_Initialize()  
    Call Lista_Vendedores 
    ComboBox1.List = Lista_Vendedores  
End Sub 

でモジュール:

Public Function Lista_Vendedores() As Variant 

Dim Lista As New Collection 
Dim Cont_Vendedores As Integer 

Cont_Vendedores = Plan1.Cells(1, 8).Value 

Sheets("Plan1").Select 

For i = 3 To Cont 
    Lista (Row.Cells(i, 8)) 
    MsgBox Lista 
Next i 

Set Lista_Vendedores = Lista 
Set Lista = Nothing  

End Function 

コードを実行しようとすると、何も起こりませんが、エラーは表示されません。

答えて

2

コードを単純化することができます。それはちょうどそれを以下の例のように範囲を与え、機能である必要はありません。

ユーザーフォーム:

Private Sub UserForm_Initialize() 
    ComboBox1.List = ThisWorkbook.Worksheets("Sheet1").Range("A1:A8") 
End Sub 

モジュール:

Public Sub ShowUserform() 
    UserForm1.Show 
End Sub 
+0

をご支援いただきありがとうございます! –

+0

FWIW - OPの使用のために、ライン(ComboBox1.List = ThisWorkbook.Worksheets( "Plan1"))を使用する必要があります(範囲は "H3:H"&ThisWorkbook.Worksheets "Plan1")。範囲( "H1")。値) '。 (元の質問を正しく解釈したと仮定すると、常に危険な前提です。) – YowE3K

2

あなたはミスをたくさん作っていますあなたのコードでは、CallumDA33ソリューションが良いですが、私はあなたがこれを見てみるべきだと思います:

まず、あなたの関数を正しく呼び出すことはありません。サブなければならない:

Private Sub UserForm_Initialize()  
    ComboBox1.List = Lista_Vendedores  
End Sub 

Call線が不要です。 (キーワードCall自体はほとんど必要ありません)。私はあなたの構文がどこから来ているのか分からない。 Lista_Vendedores機能で

  • 、あなたは正しくListaCollectionを使用していません。
  • は未定義です。モジュールの先頭には必ずOption Explicitを使用してください。
  • あなたはコレクションの価値には何の影響もありません。
  • Selectも可能な限り使用しないでください。
  • Listプロパティは、コレクションではなくバリアント配列を必要とするため、関数は単一の(空の)コレクションオブジェクトを含むバリアントではなくバリアント配列を返す必要があります。そのため、Listaの型も変更しました。

は修正が、以下の未テストコード:

Public Function Lista_Vendedores() As Variant() 

    Dim Lista As Variant() 
    Dim Cont_Vendedores As Integer 

    With Sheets("Plan1") 

     Cont_Vendedores = .Cells(1, 8).Value 
     Redim Lista(0 to Cont_Vendedores-3) 

     For i = 3 To Cont_Vendedores 
      Lista(i-3) = .Cells(i,8) 
     Next i 
    End With 

    Lista_Vendedores = Lista 
End Function 

編集:修正誤植

+0

Vicent G、それはすばらしかった!私は多くの間違いをしていることを知っています。まず、私が必要とする限り、私はこの種のプログラミングを行っていました。多くのユーザーフォームとコンボボックスが出現しましたが、それは愚かな方法になり始めました。彼のように、私は自分のコードをもっと一般的かつ明確にします。あなたは私を助けてください!私はテストし、それは動作します、ありがとう! –

+0

@VincentG 'Cont_VendoresLista'は' Cont_Vendores'になる可能性が非常に高いです... – user3598756

+0

私はCon_Vendoresを使いました。ありがとう@ user3598756 –

関連する問題