Vba 使用Excel组合框将信息从一个文件拉到另一个文件
我正在尝试将信息从excel数据库文件复制到excel显示文件。我已经知道了如何在中复制这些信息,并且根据我正在查看的不同信息,我有不同的宏。这些似乎是自己的工作 但是,我还想包括一个下拉字段,允许用户选择他们想要查看的数据集(基本上是哪个客户)。我的代码如下,我是该网站的新手,因此如果任何格式不正确,请让我知道,以便我可以改进:) 因此,代码选择了正确的大小写,然后当它启动到指定的宏中时,会弹出一个“运行时错误'1004':Select method of Range class failed”。当我去调试代码时,它有一个“范围”(“D1:D278”)。选择“当它失败时突出显示为”。我试过复制列,我试过复制更小的范围,但没有任何效果。范围内的所有单元格中都包含信息,但由于某些原因,这些信息无法正常工作。我真的很感谢任何人的帮助Vba 使用Excel组合框将信息从一个文件拉到另一个文件,vba,combobox,excel-2010,copy-paste,Vba,Combobox,Excel 2010,Copy Paste,我正在尝试将信息从excel数据库文件复制到excel显示文件。我已经知道了如何在中复制这些信息,并且根据我正在查看的不同信息,我有不同的宏。这些似乎是自己的工作 但是,我还想包括一个下拉字段,允许用户选择他们想要查看的数据集(基本上是哪个客户)。我的代码如下,我是该网站的新手,因此如果任何格式不正确,请让我知道,以便我可以改进:) 因此,代码选择了正确的大小写,然后当它启动到指定的宏中时,会弹出一个“运行时错误'1004':Select method of Range class failed
Private子组合框1_Click()
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
将wbPlt设置为工作簿,将wbTool设置为工作簿,将sourceRange设置为字符串
设置wbPlt=工作簿(“产品列表模板.xlsx”)
设置wbTool=This工作簿的工作簿(“工具V0A.xlsm”)
选择casecombobox1.Value
案例“Acme”:sourceRange=“C1:C278”
案例“Ball”:sourceRange=“D1:D278”
Case-Else:sourceRange=“”
结束选择
'如果有源范围,则复制
如果源范围为“”,则
wbPlt.Sheets(“Segment1”).范围(sourceRange).复制_
wbTool.Sheets(“段1”).范围(“J1”)
wbPlt.Sheets(“段2”).范围(源范围).复制_
wbTool.Sheets(“段2”).范围(“J1”)
wbTool.Sheets(“仪表板”)。选择
Application.CutCopyMode=False
算计
如果结束
端接头
检查下面Tim Williams的答案。使用或依赖选择
和激活
方法很容易出错,正如您所发现的,除非您完全限定每个引用。但99%的情况下,您可以避免使用这些方法,直接使用对象。选择/激活通常是多余的。干杯。当它试图查找工作簿时,在第5行出现错误,我打开了它,它在同一个文件夹中,但显然它是在单独的excel环境中打开的。我现在遇到的问题是,它没有在程序结束时执行计算功能。再次感谢!当你说它“没有做”计算到底发生了什么-什么都没有,或者你得到了一个错误?它不是计算和更新。数据被拉入,但公式不会根据拉入的新数据进行更新。请尝试calculatefulll
或CalculateFullRebuild
Hi Tim,如果我使用其中任何一个,我会得到一个“未定义的子函数或函数”
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