Excel宏如果有问题

时间:2017-01-04 18:19:41

标签: excel vba if-statement macros

我遇到问题让我的If else语句工作,如下所示。

我想从G5向下总结所有东西,但如果G6是空白的(即只有一个条目),那么我只想总和G5。所以我想出了下面的代码。

然而,我收到错误,说没有If的Else。但是,如果我把if放在else之后,我会得到另一个语法错误。

显然我错过了什么,但无法弄清楚出了什么问题。

Sub TotalR()

Sheets("Data").Select

Dim Rng As Range
Dim c As Range

If IsEmpty(Range("g6")) = True Then Range("g6").Select
ActiveCell.Formula = "=sum(g5)"
Else:
    Set Rng = Range("g5:g" & Range("g5").End(xlDown).Row)
    Set c = Range("g5").End(xlDown).Offset(1, 0)
    c.Formula = "=SUM(" & Rng.Address(False, False) & ")"

End If

End Sub

2 个答案:

答案 0 :(得分:0)

移动范围(“g6”)。选择下一行(否则该行是完整的If语句)。另外,从Else行中删除冒号。

Sub TotalR()
   Dim Rng As Range
   Dim c As Range

   Sheets("Data").Select
   If IsEmpty(Range("g6")) = True Then
        Range("g6").Select
        ActiveCell.Formula = "=sum(g5)"
    Else
        Set Rng = Range("g5:g" & Range("g5").End(xlDown).Row)
        Set c = Range("g5").End(xlDown).Offset(1, 0)
        c.Formula = "=SUM(" & Rng.Address(False, False) & ")"
    End If
End Sub

答案 1 :(得分:0)

错误的引起与@Scott Craner提到的完全相同,你需要拆分为2行:

If IsEmpty(Range("g6")) = True Then 
    Range("g6").Select
    ActiveCell.Formula = "=sum(g5)"

但是,如果您远离SelectActiveCell,最好使用引用的对象WorksheetsRange

<强>代码

Option Explicit

Sub TotalR()

Dim Rng As Range
Dim c As Range

With Sheets("Data")    
    If IsEmpty(.Range("G6")) Then
        .Range("G6").Formula = "=Sum(G5)"
    Else
        Set Rng = .Range("G5:G" & .Range("G5").End(xlDown).Row)
        Set c = .Range("G5").End(xlDown).Offset(1, 0)
        c.Formula = "=SUM(" & Rng.Address(False, False) & ")"
    End If    
End With

End Sub