使用VBA代码语法错误将占用的行高于空白行

我有一个语法错误在我的if语句,我很困惑,似乎编译器不应该需要=,但我得到一个预期的:=错误

如果isempty(activecell)则activecell.offset(0,-1)

Range(zen).Select oak = 1 Do oak = oak + 1 If IsEmpty(ActiveCell) Then ActiveCell.Offset(0, -1) Else: If IsEmpty(Selection.Offset(0, -1)) Then Copy Selection(activerow(E - M).Range) Paste Selection.Offset(0, -1) Loop Until oak = ruby 

这是完整的代码

 Dim ws As Worksheet Dim rng1 As Range Dim ruby As Integer Dim ruby2 As Integer Set ws = Sheets("Belmont") Set rng1 = ws.Columns("c").Find("*", ws.[c1], xlValues, , xlByRows, xlPrevious) Dim zen As String zen = rng1.Address(0, 0) Range(zen).Select ruby = ActiveCell.Row ruby2 = ruby - 11 Dim stones() As Boolean ReDim stones(1 To ruby) Dim z As Integer z = 1 Do If IsEmpty(ActiveCell.Offset(2, 0)) Then stones(z) = 0 Selection.Offset(-1, 0).Select z = z + 1 Else stones(z) = 1 Selection.Offset(-1, 0).Select z = z + 1 End If Loop Until z > ruby2 Range(zen).Select oak = 1 Do oak = oak + 1 If IsEmpty(ActiveCell) Then ActiveCell.Offset(0, -1) Else: If IsEmpty(Selection.Offset(0, -1)) Then Copy Selection(activerow(E - M).Range) Paste Selection.Offset(0, -1) Loop Until oak = ruby 

ActiveCell.Offset(0, -1)是无效部分。 你实际上需要用ActiveCell做些事情。 例如: ActiveCell.Offset(0, -1).Selectselect将select移动到该偏移量,或者将ActiveCell.Offset(0, -1) = "data value"将数据放入偏移单元格。

或者设置一个范围到该偏移单元格,如: Set myRange = ActiveCell.Offset(0, -1)

另外,你应该改变你的If-Then语法,使其更适合VBA:

 If IsEmpty(ActiveCell) Then ActiveCell.Offset(0, -1).Select ElseIf IsEmpty(Selection.Offset(0, -1)) Then Dim row As Integer row = ActiveCell.row Range(Cells(row, 5), Cells(row, 13)).Select Selection.Copy End If 

activerow在Excel中无效,所以上述更改应该做你想要的。