繁体   English   中英

动态不连续excel范围在VBA中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM