vba excel复制子表从表到表

时间:2013-10-29 09:22:43

标签: excel-vba vba excel

我意识到这可能是重复的,但我一直在寻找一个小时,我无法正确理解语法。 我有一张带有几张桌子的床单。在一个表与另一个表之间至少有一个空列和一个空行。

我知道每个表的起始行和起始列,我知道每个表有3列。我不知道它有多少行。

我想写一个接收的子<:p>

  1. 表格开始行

  2. 表格起始栏

  3. 并将表复制到另一张表中(假设目的地是从A1开始的sheet2)。

    我知道我可以用循环来做,但我怀疑有更好的语法吗? (这里的主要问题是我需要找到每个表的行数)

    感谢。 李

1 个答案:

答案 0 :(得分:3)

这个子将完成这项工作:

Sub CopyTable(wsSource As Worksheet, lngTopRow As Long, intLeftCol As Integer, rngTarget As Range)
    Dim rngSource As Range
    Dim intCols As Integer, lngRows As Long

    Set rngSource = wsSource.Cells(lngTopRow, intLeftCol)
    intCols = rngSource.End(xlToRight).Column - intLeftCol + 1
    lngRows = wsSource.Cells(wsSource.Rows.Count, intLeftCol).End(xlUp).Row - lngTopRow + 1

    rngSource.Resize(lngRows, intCols).Copy rngTarget

End Sub

要将从工作表1的第1行第5列开始的表复制到Sheet2!A2,请使用以下调用:

CopyTable Sheets("Sheet1"), 1, 5, Sheets("Sheet2").Range("A2")

这假设每张桌子下方没有任何内容。如果不是这种情况,请用

替换第3条指令
lngRows = rngSource.End(xlDown).Row - lngTopRow + 1

现在假设您表格的第一列没有间隙。如果不是这样,请尝试使用rngSource.UsedRange.Row代替rngSource.End(xlDown).Row