-2

このコードを実行しようとすると、Excel Vba で問題が発生します。下付き文字が範囲外のエラーが発生します。

Private Sub UserForm_Initialize()
  n_users = Worksheets(Aux).Range("C1").Value

  Debug.Print Worksheets(Aux).Range("B1:B" & n_users).Value

  ListBox1.RowSource = Worksheets(Aux).Range("B1:B" & n_users).Value

  ComboBox1.RowSource = Worksheets(Aux).Range("B1:B" & n_users).Value
  ComboBox2.RowSource = Worksheets(Aux).Range("B1:B" & n_users).Value

End Sub

また、Debug.Print はうまく機能するため、唯一の問題は Range("B1:B" & n_users).Value にあります。

4

3 に答える 3

1

シートの名前が「Aux」の場合は、各Worksheets(Aux)参照をに変更しWorksheets("Aux")ます。Auxたとえば、文字列変数を作成しない限り、次のようになります。

Dim Aux As String  
Aux = "YourWorksheetName"
n_users = Worksheets(Aux).Range(C1).Value

シート参照の前後に引用符を使用する必要があります。

于 2013-10-19T16:36:19.010 に答える
0

まず、Aux実際のコードのどこかで定義していない限り、これは機能しません。シート名の参照は、空の変数ではなく、文字列値でなければなりません (ARich は彼の回答で説明しています)。

第 2 に、rowsource 値を入力しようとしている方法が正しくありません。コンボボックスの rowsource プロパティは、ターゲット範囲を参照する文字列値を使用して設定されます。これは、別のシートのセルを参照するために Excel の数式で使用するのと同じ文字列値を意味します。たとえば、ワークシートの名前が「Aux」の場合、これがコードになります。

ComboBox1.RowSource = "Aux!B1:B" & n_users

名前付き範囲も使用できると思います。このリンクはそれを少し説明しています。

于 2013-10-19T18:13:42.113 に答える