【问题标题】:Using Excel ComboBox to pull information from one file to another使用 Excel ComboBox 将信息从一个文件提取到另一个文件
【发布时间】:2013-05-15 12:00:54
【问题描述】:

我正在尝试将信息从 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“)。选择”突出显示为失败时。我尝试过复制列,尝试过复制较小的范围,但没有任何效果。该范围内的所有单元格中都有信息,但由于某种原因,它只是不起作用。我真的很感谢任何人的帮助!

【问题讨论】:

  • 在下面查看 Tim Williams 的回答。正如您所发现的,使用或依赖SelectionActivate 方法很容易出错,除非您完全限定每个引用。但在 99% 的情况下,您可以避免使用这些方法而直接使用对象。选择/激活大多是多余的。干杯。

标签: vba combobox excel-2010 copy-paste


【解决方案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

【讨论】:

  • 在第 5 行尝试查找工作簿时出现错误,我将其打开并位于同一文件夹中,但显然它是在单独的 excel 环境中打开的。我现在遇到的问题是它没有在程序结束时执行计算功能。再次感谢!
  • 当你说它“不做”时,计算到底发生了什么——什么都没有,或者你得到一个错误?
  • 它没有计算和更新。数据被拉出,但公式不会根据拉入的新数据进行更新。
  • 试试CalculateFullCalculateFullRebuild
  • 嗨蒂姆,如果我使用其中任何一个,我会得到“未定义子或函数”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多