我意识到这可能是重复的,但我已经搜索了一个小时,但我无法正确使用语法。我有一张有几张桌子的表格。一个表到另一个表之间至少有一个空列和一个空行。
我知道每个表的起始行和起始列,并且我知道每个表有 3 列。我不知道它有多少行。
我想写一个接收:
表格开始行
表开始列
并将表格复制到另一个工作表中(假设目标是从 A1 开始的 sheet2)。
我知道我可以用循环来做到这一点,但我怀疑有更好的语法对吗?(这里的主要问题是我需要找到每个表的行数)
谢谢。李
这个子将完成这项工作:
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
要将表从 worksheet1 的第 1 行第 5 列开始复制到 Sheet2!A2,请使用以下调用:
CopyTable Sheets("Sheet1"), 1, 5, Sheets("Sheet2").Range("A2")
这假设每张桌子下面都没有任何东西。如果不是这种情况,请将第三条指令替换为
lngRows = rngSource.End(xlDown).Row - lngTopRow + 1
现在假设您的表格的第一列没有间隙。如果这不是真的,请尝试使用rngSource.UsedRange.Row
代替rngSource.End(xlDown).Row
!