我试图在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`
答案 0 :(得分:1)
首先,代码中似乎存在拼写错误。在最后一个语句结束时,你有一个流浪的`字符。
你想要excel做的似乎相当于CTRL + Shift + Down,Right,Right,Right。代码实际执行的是Ctrl + [箭头键]然后将原始选择扩展到此新单元格。 Microsoft告诉我们CTRL + [ArrowKey]将我们带到当前区域的边缘。举例说明:
因此,既然您选择了一个范围,那么您每次都会重新选择相同的范围!
在尝试选择需要多次调用.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'