我有一张电子表格,其中J1是一个下拉列表。第8-14行中的内容将根据您在J1中的选择而更改。我需要遍历下拉列表中的所有值,并将所有相应的行复制到新的工作簿。复制粘贴部分正在工作,但我在下拉列表中遇到问题。特别是,我需要一些帮助来定义Formula1。我正在使用excel 2010.这是我的代码。提前致谢
Sub iterate_dropdown()
Dim inputRange As Range
Dim c As Range
Dim Current As Range
Set inputRange = Evaluate(Workbooks("sample.xlsm").Worksheets("Credit Research Journal").Range("J1").Validation.Formula1)
For Each c In inputRange
Workbooks("sample.xlsm").Worksheets("Credit Research Journal").Range("J1").Value = c.Value
Workbooks("sample.xlsm").Sheets("Credit Research Journal").Activate
Workbooks("sample.xlsm").RefreshAll
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
Cells(8, 1).Resize(FinalRow - 7, 10).Copy
Workbooks("Book2.xlsm").Sheets("Sheet3").Activate
NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Set Current = Cells(NextRow, 1)
Current.PasteSpecial xlPasteValues
Next c
End Sub
答案 0 :(得分:0)
我做了一些你发布的代码的实验,看起来你非常接近。我发现你获得inputRange
的步骤包括一个等号(=),然后导致Evaluate函数失败。
以下是我使用的代码:
Sub iterate_dropdown()
Dim inputRange As Range
Dim c As Range
Dim Current As Range
Dim strRange As String
Dim strRange2 As String
strRange = Worksheets("Credit Research Journal").Range("J1").Validation.Formula1
strRange2 = Replace(strRange, "=", "") 'Get rid of the equals sign
Set inputRange = Evaluate(strRange2)
For Each c In inputRange
Workbooks("sample.xlsm").Worksheets("Credit Research Journal").Range("J1").Value = c.Value
Workbooks("sample.xlsm").Sheets("Credit Research Journal").Activate
Workbooks("sample.xlsm").RefreshAll
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
Cells(8, 1).Resize(FinalRow - 7, 10).Copy
Workbooks("Book2.xlsm").Sheets("Sheet3").Activate
NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Set Current = Cells(NextRow, 1)
Current.PasteSpecial xlPasteValues
Next c
End Sub
我使用了两个字符串变量strRange
和strRange2
,这样您就可以轻松地使用调试器,看看发生了什么。
此外,我假设你的下拉列表正在被引用其他单元格的值填充。