动态不连续excel范围在VBA中

时间:2016-08-12 07:04:38

标签: vba excel-vba excel

如何动态扩展需要复制到另一个工作表的两列中的行数?

首先,我确定需要包含和存储在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

2 个答案:

答案 0 :(得分:3)

.Range("B2:B102,G2:G102").copy

可以写成

.Range("B2:B" & totrows & ",G2:G" & totrows).Copy

答案 1 :(得分:1)

不使用.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