[英]Dynamic discontinuous excel ranges in VBA
如何动态扩展需要复制到另一个工作表的两列中的行数?
首先,我找出我需要包括在存储的行数totrows
:
Dim totrows As Integer
With ThisWorkbook.Worksheets("Sheet1")
totrows = .Range("A" & .Rows.Count).End(xlUp).Row
End With
接下来,我试图扩展两列感兴趣的列(“B”和“G”),以便范围包括totrows
行的行。 对于一个静态的例子,如果totrows
= 100那么我会:
With ThisWorkbook.Worksheets("Sheet1")
.Range("B2:B102,G2:G102").copy
End With
然后我将它们粘贴到我的第二张纸中:
ThisWorkbook.Worksheets("Sheet2").Range("A2").Paste
.Range("B2:B102,G2:G102").copy
可写成
.Range("B2:B" & totrows & ",G2:G" & totrows).Copy
另一种方法,而无需使用.Copy
或.Paste
会是这样的:
Sub Copy()
Dim wb As Workbook
Dim wsCopy As Worksheet
Dim wsPaste As Worksheet
Dim totrows As Integer
Set wb = Workbooks("Book1.xlsm")
Set wsCopy = wb.Worksheets("Sheet1")
Set wsPaste = wb.Worksheets("Sheet2")
totrows = wsCopy.Range("A" & wsCopy.Rows.Count).End(xlUp).Row
wsPaste.Range("A1:B" & totrows) = wsCopy.Range("A2:A" & totrows, "G2:G" & totrows).Value
End Sub
这样您可以直接将值放入所需的Range
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.