[英]Looping through a Column in VBA to copy an entire row
I am attempting to Loop through a Column K starting at row 14 until the end. 我试图循环遍历从第14行到最后的K列。 I have written the following code, but it stops working at the Range("K14:") line.
我已经编写了以下代码,但是在Range(“ K14:”)行处停止了工作。 I tried using Range("K14"& Rows.Count) but that didn't help either.
我尝试使用Range(“ K14”&Rows.Count),但这也无济于事。
Windows("Price VolatilityDM.xlsm").Activate
Sheets("Volatility Static Data").Activate
Dim x As Single
Dim Cell As Range
For Each Cell In Range("K14:")
If Cell.Value > 0.25 Then
Sheets("Volatility Static Data").Range("B:K").Copy
Windows("Tolerance ReportDM.xslm").Activate
Sheets("Sheet1").Range("K17:Q17").Paste
End If
Next Cell
Windows("Price VolatilityDM.xlsm").Activate
Sheets("Volatility Static Data").Activate
Set sh = ThisWorkbook.Workheets("Volatility Static Data") ' add a reference to the sheet for simplicity
Dim x As Single
Dim Cell As Range
Dim lastRow
lastRow = sh.Cells(sh.Rows.Count, "K").End(xlUp).Row ' get the last row
For Each Cell In Range("K14:K" & lastRow)
If Cell.Value > 0.25 Then
Sheets("Volatility Static Data").Range("B:K").Copy
Windows("Tolerance ReportDM.xslm").Activate
Sheets("Sheet1").Range("K17:Q17").Paste
End If
Next Cell
You just need to find the end of the Range
object and make sure you iterate over to that. 您只需要找到
Range
对象的末尾并确保您遍历该对象即可。 See above; 往上看; if there are any questions, let me know.
如有任何疑问,请告诉我。
It stops there because you haven't completed writing the whole range. 因为您尚未完成整个范围的编写,所以它在那里停止。
"K14:"
is invalid syntax. "K14:"
是无效的语法。 For example, you could do: "K14:K" & LastRow
例如,您可以这样做:
"K14:K" & LastRow
you can use something like this to find the end of column K starting at 14: 您可以使用以下方法找到以14开始的K列的结尾:
dim end as range
set cell = range("K14")
'go down one cell at a time until you find that
'the next one is empty. This is the end of the column
do while not cell.offset(1,0).value = ""
set cell = cell.offset(1,0)
loop
set end = cell
and then use for each cell in range("K14:" & end.address)
然后
for each cell in range("K14:" & end.address)
In your code it'd look like this: 在您的代码中,它看起来像这样:
Windows("Price VolatilityDM.xlsm").Activate
Sheets("Volatility Static Data").Activate
Dim x As Single
Dim Cell As Range
dim end as range
set cell = range("K14")
'go down one cell at a time until you find that
'the next one is empty. This is the end of the column
do while not cell.offset(1,0).value = ""
set cell = cell.offset(1,0)
loop
set end = cell
For Each Cell In Range("K14:" & end.address)
If Cell.Value > 0.25 Then
Sheets("Volatility Static Data").Range("B:K").Copy
Windows("Tolerance ReportDM.xslm").Activate
Sheets("Sheet1").Range("K17:Q17").Paste
End If
Next Cell
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.