选择范围“不工作”

时间:2015-08-25 13:23:23

标签: excel vba

我试图在Excel中选择一个范围,其第一列填充连续数据(10-20行),并且在该范围内可以有空单元格。我记录了一个宏,但是当我运行它时,它不起作用。

错误在哪里?

'Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select`

3 个答案:

答案 0 :(得分:1)

首先,代码中似乎存在拼写错误。在最后一个语句结束时,你有一个流浪的`字符。

你想要excel做的似乎相当于CTRL + Shift + Down,Right,Right,Right。代码实际执行的是Ctrl + [箭头键]然后将原始选择扩展到此新单元格。 Microsoft告诉我们CTRL + [ArrowKey]将我们带到当前区域的边缘。举例说明:

Ctrl Right

因此,既然您选择了一个范围,那么您每次都会重新选择相同的范围!

在尝试选择需要多次调用.End(xlToRight)的范围时,可能是您的解决方案是使用最后一列:

'Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.Cells(1,Selection.Columns.Count).End(xlToRight)).Select
Range(Selection, Selection.Cells(1,Selection.Columns.Count).End(xlToRight)).Select
Range(Selection, Selection.Cells(1,Selection.Columns.Count).End(xlToRight)).Select

这相当于按CTRL + Shift + Down,Right,Right,Right。

如果您遇到更多问题,请告诉我们。)

答案 1 :(得分:0)

你可以尝试这样的事情(你可能想稍微改变一下)

Cells(ActiveCell.Row, 1000).Select
Selection.End(xlToLeft).Select
Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, ActiveCell.Column)).Select
Range(Selection, Selection.End(xlDown)).Select

在你点击最后一个填充的单元格之前不会试图继续进行 - 这会从右边的1000列开始,然后选择从第一列到最后一列的范围(无论间隙如何)

我认为这适合所提到的场景 - 因为它也会在完成的选择结束时进行。

然而,您可以调整代码,为行做同样的事情。

答案 2 :(得分:0)

该表在C2,E2中有空单元

'Sub Macro2()

Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer
Dim currentRowValue As String

Sheets("Sheet2").Select
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select -Select first Column until exists data
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select -Did not make step over C2 (empty cell)
Range(Selection, Selection.End(xlToRight)).Select

Selection.Copy
Sheets("Sheet3").Select
Range("A1").Select


sourceCol = 1   
rowCount = Cells(Rows.Count, sourceCol).End(xlUp).Row

    For currentRow = 1 To rowCount + 1
    currentRowValue = Cells(currentRow, sourceCol).Value
    If IsEmpty(currentRowValue) Or currentRowValue = "" Then
        Cells(currentRow, sourceCol).Select
    End If
Next

ActiveSheet.Paste
Sheets("Sheet2").Select
Range("A2:A100").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("C2:C100").Select
Selection.ClearContents
ActiveWorkbook.Save
Range("A2").Select
End Sub'