vba - VBA,用 LastRow 定义范围
问题描述
我在用最后一行变量定义变量时遇到问题。得到错误:
应用程序定义或对象定义的错误
LastRow = WorksheetFunction.Max(Sheets("stack").Cells(Rows.Count, "M").End(xlUp).Row + 1)
busdates = Sheets("stack").Range("M3" & ":" & "M & LastRow - 1")
我知道这与我的范围有关。有人可以帮忙看看这个格式吗?试图获得 M3 到 M 最后一行的范围。
然后我试图busdates
像这样循环,
For d = 2 To busdates
If ActiveSheet.Range("F") <> busdates Then
ActiveSheet.Range("F2:K").Copy
ActiveSheet.Range("M" & LastRow).PasteSpecial Paste:=xlPasteValues
End If
Next
解决方案
这里要复制的范围ActiveSheet.Range("F2:K").Copy
没有完全定义。该K
列缺少一行。
Gessingbusdates
是一个范围,那么它应该这样分配:
Dim busDates As Range
Set busDates = Sheets("stack").Range("M3:M" & lastRow - 1)
d
如果在循环中未使用变量,则循环遍历范围的行有点毫无意义,但仍然:
For d = 2 To busDates.Rows.Count + 2
ActiveSheet.Range("F2:K" & lastRow).Copy
ActiveSheet.Range("M" & lastRow).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Next
可能循环busDates
可以这样完成:
Dim myCell As Range
For Each myCell In busDates
If myCell.Row > 2 Then
'some cut and copy here
End If
Next myCell
最后但并非最不重要的ActiveSheet
一点是,在 VBA 中要避免,但在这种情况下它可能是无害的 - 如何避免在 Excel VBA 中使用 Select。
以某种方式工作的整个代码在这里:
Sub TestMe()
Dim lastRow As Long
lastRow = WorksheetFunction.Max(Sheets("stack").Cells(Rows.Count, "M").End(xlUp).Row)
lastRow = lastRow + 1
Dim busDates As Range
Set busDates = Sheets("stack").Range("M3:M" & lastRow - 1)
Dim d As Long
For d = 2 To busDates.Rows.Count + 2
ActiveSheet.Range("F2:K" & lastRow).Copy
ActiveSheet.Range("M" & lastRow).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Next
End Sub
推荐阅读
- html - nodejs获取另一个页面
- gams-math - GAMS:获取向量的第 n 个元素
- android - 如何在布局中制作像谷歌支付这样的缺口
- xss - 有人可以给我一个反射 xss 的真实场景吗?
- javascript - Jasmine spyOn 不适用于窗口功能
- html - 如果超出可见屏幕,如何找到我的下拉 div?
- javascript - 如何将我的 csv 文件组织成 Javascript
- python - 如何在不执行“find_element”的情况下使用 selenium 定义按钮?(Python)
- php - 将“MediaBox[2.8347 2.83467 609.449 856.063]”拆分为 4 个数字(或获取 PDF 大小)
- python - 如何计算消息的数量?