0

私はvbaの初心者なので、私の無知を許してください。ドロップダウン リストを実行し、ドロップダウン内の名前ごとに出力するマクロを作成しました。これは機能します。

Sub PrintAll()

  Dim Cell As Range
  Dim Rng As Range
  Dim Wks As Worksheet

  Set Wks = Worksheets("PRINT PAGE")
  Set Rng = ThisWorkbook.Names("Brokers").RefersToRange


  For Each Cell In Rng
    If Cell <> "" Then
       Wks.Range("$B$5").Value = Cell.Text
       Wks.PrintOut
    End If
  Next Cell

End Sub

ただし、ワークブックには読み取るワークシートが複数あるため、複数の範囲から読み取るにはvbaが必要なので、これを試しました

Sub PrintAll()

  Dim Cell As Range
  Dim Cell2 As Range
  Dim Rng As Range
  Dim Wks As Worksheet

Set Wks = Worksheets("PRINT PAGE")

 If "$A$5" = "Company1" Then Rng = ThisWorkbook.Names("1Brokers").RefersToRange
 ElseIf "$A$5" = "Company2" Then Rng = ThisWorkbook.Names("2Brokers").RefersToRange
 Else: Set Rng = ThisWorkbook.Names("3Brokers").RefersToRange
 End If

  For Each Cell In Rng
    If Cell <> "" Then
       Wks.Range("$B$5").Value = Cell.Text
       Wks.PrintOut
    End If
  Next Cell

End Sub

問題は、If ステートメントで "Compile error Else without If" が発生し続けることです。If ステートメントの設定方法やコードでの使用方法に問題はありますか?

4

3 に答える 3

2

このブロックは私のためにコンパイルされます。テストしてください。私はいつもセットの後からスタートしていthenますif

Sub PrintAll()

  Dim Cell As Range
  Dim Cell2 As Range
  Dim Rng As Range
  Dim Wks As Worksheet

'Set Wks = Worksheets("PRINT PAGE")

 If "$A$5" = "Company1" Then
    Rng = ThisWorkbook.Names("1Brokers").RefersToRange
 ElseIf "$A$5" = "Company2" Then
    Rng = ThisWorkbook.Names("2Brokers").RefersToRange
 Else
    Set Rng = ThisWorkbook.Names("3Brokers").RefersToRange
 End If

  For Each Cell In Rng
    If Cell <> "" Then
       Wks.Range("$B$5").Value = Cell.Text
       Wks.PrintOut
    End If
  Next Cell

End Sub
于 2013-10-04T16:16:57.127 に答える
1

使用する

If Range("$A$5").Value = "Company1"..

「$A$5」も同様です。

「$A$5」は単なる文字列であり、文字列と文字列を比較しています。あなたが欲しいのは範囲オブジェクトです

編集

取得しているエラーに関しては、使用する必要がありますThen

構文は(Hiten004の投稿で気づきました)

If <Cond> Then
ElseIF <Cond> Then
End If
于 2013-10-04T16:14:38.160 に答える
0

それよりも:

If "$A$5" = "Company1" Then Rng = ThisWorkbook.Names("1Brokers").RefersToRange

使用する:

If "$A$5" = "Company1" Then Set Rng = ThisWorkbook.Names("1Brokers").RefersToRange

コードに他の問題がある可能性があります。

于 2013-10-04T16:13:49.510 に答える