我意识到这可能是重复的,但我一直在寻找一个小时,我无法正确理解语法。 我有一张带有几张桌子的床单。在一个表与另一个表之间至少有一个空列和一个空行。
我知道每个表的起始行和起始列,我知道每个表有3列。我不知道它有多少行。
我想写一个接收的子<:p>
表格开始行
表格起始栏
并将表复制到另一张表中(假设目的地是从A1开始的sheet2)。
我知道我可以用循环来做,但我怀疑有更好的语法吗? (这里的主要问题是我需要找到每个表的行数)
感谢。 李
答案 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
!