Excel VBA循环通过下拉列表,复制范围

Excel VBA循环通过下拉列表,复制范围,excel,vba,Excel,Vba,我有一张名为“发票温度”的表格,发票温度在L4上有一个下拉列表。 修改此下拉列表将更新“发票温度”A1:J54范围内的单元格 我想做的是让VBA在L4中的下拉列表中滚动,对于每个值,将A1:J54范围复制到新的工作簿中,并在L4值后重命名工作表,然后将其保存在文件夹:c:/folder a下/ ^这是大局。我已经研究出如何让它循环并复制单个单元格,但复制范围似乎有问题 列K具有L4的数据验证 谢谢你的帮助 以下是我得到的: Sub trial() Dim dvCell As Range Dim

我有一张名为“发票温度”的表格,发票温度在L4上有一个下拉列表。 修改此下拉列表将更新“发票温度”A1:J54范围内的单元格

我想做的是让VBA在L4中的下拉列表中滚动,对于每个值,将A1:J54范围复制到新的工作簿中,并在L4值后重命名工作表,然后将其保存在文件夹:c:/folder a下/

^这是大局。我已经研究出如何让它循环并复制单个单元格,但复制范围似乎有问题

列K具有L4的数据验证

谢谢你的帮助

以下是我得到的:

Sub trial()
Dim dvCell As Range
Dim inputRange As Range
Dim c As Range
Dim i As Long
Set dataSheet = Sheets("Invoice")



   Dim curSheetName As String
   curSheetName = LefdataSheet.Cells(i, "K"), 24)

    Call AddSheet(curSheetName)

    Set trgSheet = Sheets(targetSheetName)


 'Which cell has data validation
  Set dvCell = Worksheets("Invoice").Range("L4")
 'Determine where validation comes from
  Set inputRange = Evaluate(dvCell.Validation.Formula1)
   i = 1
 'Begin our loop
Application.ScreenUpdating = False
For Each c In inputRange
    dvCell = c.Value



dataSheet.Range("prototemp").Copy
trgSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
trgSheet.Range("A1").PasteSpecial Paste:=xlPasteFormats
trgSheet.Range("A1").PasteSpecial Paste:=xlPasteFormulas
trgSheet.Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
i = i + 1


Next c
Application.ScreenUpdating = True


End Sub

Sub AddSheet(sheetName As String)

'Remove sheet if one already exist
Application.DisplayAlerts = False
On Error Resume Next
Sheets(sheetName).Delete
Err.Clear
Application.DisplayAlerts = True

'Add sheet with designated name
Sheets.Add(after:=Sheets(Sheets.Count)).Name = sheetName
End Sub

在循环中,您设置了
dvCell=c.Value
,但从不使用
dvCell
。循环应该做什么?无论
c
值是多少,它都会复制您的命名范围“prototemp”。它应该循环遍历下拉列表中的所有名称,并为每个名称创建一个新工作簿,范围为发票温度的a1:j54,带有值和格式。使用下拉列表中相应的值命名工作表。在循环中,您设置了
dvCell=c.value
,但从不使用
dvCell
。循环应该做什么?无论
c
值是多少,它都会复制您的命名范围“prototemp”。它应该循环遍历下拉列表中的所有名称,并为每个名称创建一个新工作簿,范围为发票温度的a1:j54,带有值和格式。使用下拉列表中的相应值命名图纸。