Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 选择具有空行的范围单元格_Excel_Vba - Fatal编程技术网

Excel 选择具有空行的范围单元格

Excel 选择具有空行的范围单元格,excel,vba,Excel,Vba,我一直很难弄清楚如何将这个select range宏编码为包含空行。工作表是具有可变列数和行数的图表。这就是我到目前为止所做的: Sub Macro1() Range("A5").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy End Sub 宏中的选择步骤只会执行到该空行,

我一直很难弄清楚如何将这个select range宏编码为包含空行。工作表是具有可变列数和行数的图表。这就是我到目前为止所做的:

Sub Macro1()
    Range("A5").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
End Sub
宏中的选择步骤只会执行到该空行,不会再执行下去(显然,因为它是空的,呵呵)。出于这个原因,我尝试适应这种不连续的代码类型,但没有成功:

Sub SelectRangeDown_Discontiguous()
    Range("A5", Range("A65536").End(xlUp)).Select
End Sub

我希望有人能帮我找出写这段代码的最佳方法?我走对了吗?

如果您使用的是
.End(xlToRight)
.End(xlDown)
您将在空白单元格处停止。如果您使用的是
Range(“A65536”).End(xlUp)
,那么您只选择了一列,但是您得到了从A5到最后填充的单元格的所有内容,并且绕过了临时空白单元格。横向扩展后一种方法

Sub Macro1()
    with Range("A5")
        .resize(cells(rows.count, "A").end(xlup).row - (.row - 1), _
                cells(5, columns.count).end(xltoleft).column - (.column - 1)).Copy
    end with
End Sub
这会更好地与一个

您不需要为了实现它而使用某种方法



有关摆脱依靠选择和激活来实现目标的更多方法,请参阅。

如果使用
.End(xlToRight)
.End(xlDown)
则将在空白单元格处停止。如果您使用的是
Range(“A65536”).End(xlUp)
,那么您只选择了一列,但是您得到了从A5到最后填充的单元格的所有内容,并且绕过了临时空白单元格。横向扩展后一种方法

Sub Macro1()
    with Range("A5")
        .resize(cells(rows.count, "A").end(xlup).row - (.row - 1), _
                cells(5, columns.count).end(xltoleft).column - (.column - 1)).Copy
    end with
End Sub
这会更好地与一个

您不需要为了实现它而使用某种方法


有关摆脱依靠选择和激活来实现目标的更多方法,请参阅。

考虑:

Sub whatever()
    Dim r1 As Range, r2 As Range

    ActiveSheet.UsedRange
    Set r1 = Range(Cells(5, 1), Cells(Rows.Count, Columns.Count))
    Set r2 = Intersect(r1, ActiveSheet.UsedRange)

End Sub
考虑:

Sub whatever()
    Dim r1 As Range, r2 As Range

    ActiveSheet.UsedRange
    Set r1 = Range(Cells(5, 1), Cells(Rows.Count, Columns.Count))
    Set r2 = Intersect(r1, ActiveSheet.UsedRange)

End Sub

尝试
范围(范围(“A5”),单元格(行数,3)。结束(xlUp))。选择
。在这种情况下,您需要
范围
环绕
A5
。感谢您提供的提示@Scott.Try
范围(范围(“A5”),单元格(行数,3)。结束(xlUp))。选择
。在这种情况下,您需要
范围
环绕
A5
。谢谢您的提示@Scott。非常感谢@Jeeped。这很有效。非常感谢您对扩展所有列的选择的详细解释。非常感谢@Jeeped。这很有效。非常感谢您对将选择范围扩展到所有栏目的详细解释。谢谢@Gary的学生。我很感激你对代码的详细分解。非常符合逻辑。谢谢你@Gary的学生。我很感激你对代码的详细分解。非常合乎逻辑。