我正在尝试使用“直到”循环从列表中获取值(下拉字段工作表,从单元格B19开始),并更新另一个Excel工作表的单元格值(特别是数据收集工作表,单元格C1) 。一旦使它起作用,我将添加已经起作用的代码以根据数据收集工作表中C1中的值保存文件。
我正在测试代码,但是在提取第一个值后一直卡住。基本上,它直到列表结束才真正遍历列表。
我认为这与归类为活动细胞的细胞有关。我认为,当我粘贴更改活动单元格的值时。我试图通过再次重申活动单元来纠正此问题。但这可能会创建一个无限循环。
有什么我可以做的调整吗?预先感谢您查看此内容以及可能收到的任何回复!我基于https://docs.microsoft.com/en-us/office/troubleshoot/excel/loop-through-data-using-macro
上的文档结构以下代码:
Sub Test2()
' Select cell to start loop, *first line of data*.
Worksheets("Drop-down fields").Activate
Range("B19").Select
Worksheets("Drop-down fields").Range("B19").Copy
' Set Do loop to stop when an empty cell is reached.
Do Until IsEmpty(ActiveCell)
Worksheets("Data Collection").Range("C1").PasteSpecial Paste:=xlPasteValues
Worksheets("Drop-down fields").Activate
Range("B19").Select
' Step down 1 row from present location.
ActiveCell.Offset(1, 0).Select
Loop
End Sub
答案 0 :(得分:0)
塞缪尔,
在这里,您的代码经过了重构,以删除所有激活和选择,并在B列中逐一递增并复制到C列。
Sub Test2()
Dim wksSrc as Worksheet
Dim wksDst as Worksheet
Dim lSrcRow as Long
Dim lDstRow as Long
Set wksSrc = Worksheets("Drop-down fields")
Set wksDst = Worksheets("Data Collection")
lSrcRow = 19
lDstRow = 1
Do
wksSrc.cells(lSrcRow,2).Copy
wksDst.Cells(lDstRow,3).PasteSpecial Paste:=xlPasteValues
lSrcRow = lSrcRow + 1
lDstRow = lDstRow + 1
Loop Until wksSrc.cells(lSrcRow,lSrcCol) = ""
End Sub 'Test2
注意:代码未经测试,但我认为所有引用都正确。 HTH