选择未知大小时包括合并单元格 - Excel VBA

时间:2016-04-28 19:51:00

标签: excel-vba vba excel

我正在尝试通过VBA从电子表格中进行选择并将其粘贴到Word文档中。选择中有合并的单元格,我想按原样包含它们。选择大小可能会更改,因此我使用.Range.End来结束选择。问题是,一旦我的代码命中一个合并的单元格,它就不能再进一步,只返回选择的一部分。

我该如何修改?我希望在没有循环的情况下实现这一点。

Dim rngEnd As Range
Set rngEnd = shDevAvail.Range("C8").End(xlDown)

shDevAvail.Range("A6", rngEnd).Copy
wdDoc.Bookmarks("Device_Avail_Chart").Range.Paste

以下是我要选择的数据。蓝色行是合并的单元格。 当我试图找到选择的底部时,我只能在下一个蓝色行之前拉到行。

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您有任何没有合并单元格的列,您可以使用该列上的range.end方法,例如:

Dim i as Integer

i = shDevAvail.Range("A6").End(xlDown).Row
shDevAvail.Range("A6", "C" & i).Copy

如果每一列都有合并,那么你可以从底部出现,假设该范围内没有任何其他内容。

Dim i As Integer

i = shDevAvail.Range("C400000").End(xlUp).Row
shDevAvail.Range("A6", "C" & i).Copy

最后,您可以再次使用i = shDevAvail.UsedRange.Rows.Count,假设您在相关范围之后没有任何内容。如果使用此方法,如果您有任何前导空白行,则必须将前导空白的数量添加到返回的数字,即如果表单顶部有5个空白行,则需要执行{{1} }。