0

我正在尝试将信息从 excel 数据库文件复制到 excel 显示文件。我已经弄清楚如何复制该信息,并且根据我正在查看的不同信息,我有不同的宏。这些似乎是自己工作的。

但是,我还想包含一个下拉字段,然后允许用户选择他们想要查看的数据集(基本上是哪个客户)。我的代码在下面,我是该网站的新手,所以如果任何格式不正确,请告诉我,以便我改进:)

    Private Sub ComboBox1_Click()

    Select Case ComboBox1.Value
      Case "Acme"
        'Acme Macro
        ' Pulls Acme Customer Information from Database for each Segment
        Application.CutCopyMode = False
        Windows("Product_List_Template.xlsx").Activate
        Sheets("Segment1").Range("C1:C278").Copy
        Windows("Tool V0A.xlsm").Activate
        Sheets("Segment1").Range("J1:J278").Paste
        Application.CutCopyMode = False
        Windows("Product_List_Template.xlsx").Activate
        Sheets("Segment2").Range("C1:C278").Copy
        Windows("Tool V0A.xlsm").Activate
        Sheets("Segment2").Range("J1:J278").Paste
        Application.CutCopyMode = False
        Sheets("Dashboard").Select
        Application.CutCopyMode = False
        Calculate
      Case "Ball"
        ' Ball Macro
        ' Pulls Ball Customer Information from Database for each Segment
        Windows("Product_List_Template.xlsx").Activate
        Sheets("Segment1").Select
        Range("D1:D278").Select
        Selection.Copy
        Windows("Tool V0A.xlsm").Activate
        Sheets("Segment1").Select
        Range("J1:J278").Select
        ActiveSheet.Paste
        Windows("Product_List_Template.xlsx").Activate
        Sheets("Segment2").Select
        Range("D1:D278").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Tool V0A.xlsm").Activate
        Sheets("Segment2").Select
        Range("J1:J278").Select
        ActiveSheet.Paste
        Sheets("Dashboard").Select
        Application.CutCopyMode = False
        Calculate
      Case Else
        Exit Sub
    End Select
    End Sub

所以代码选择了正确的案例,然后当它开始进入指定的宏时,我弹出“运行时错误'1004':范围类的选择方法失败”。当我去调试代码时,它的“范围(”D1:D278“)。选择”突出显示为失败时。我尝试过复制列,尝试过复制较小的范围,但没有任何效果。该范围内的所有单元格中都有信息,但由于某种原因,它无法正常工作。我真的很感谢任何人的帮助!

4

1 回答 1

1
Private Sub ComboBox1_Click()

    Dim wbPlt As Workbook, wbTool As Workbook, sourceRange As String

    Set wbPlt = Workbooks("Product_List_Template.xlsx")
    Set wbTool = ThisWorkbook 'Workbooks("Tool V0A.xlsm")

    Select Case ComboBox1.Value
      Case "Acme": sourceRange = "C1:C278"
      Case "Ball": sourceRange = "D1:D278"
      Case Else: sourceRange = ""
    End Select

    'copy if have source range
    If sourceRange <> "" Then

        wbPlt.Sheets("Segment1").Range(sourceRange).Copy _
                   wbTool.Sheets("Segment1").Range("J1")

        wbPlt.Sheets("Segment2").Range(sourceRange).Copy _
                   wbTool.Sheets("Segment2").Range("J1")

        wbTool.Sheets("Dashboard").Select
        Application.CutCopyMode = False
        Calculate

    End If

End Sub
于 2013-05-21T00:57:48.907 回答