2017-01-04 2 views
-1

If elseを使用するには、次のような問題があります。ExcelマクロElse問題の場合

G5からすべてを集計したいのですが、G6が空白の場合(つまりエントリが1つしかない場合)、G5を合計したいだけです。だから私は下のコードを考え出した。

しかし、私はIf Without Without Elseと言っています。しかし、もし私がelseの後にIfを置くと、別の構文エラーが出ます。

明らかに私は何かが不足していますが、何が間違っているのか理解できません。

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

'のisEmpty(レンジ( "G6" は))trueの場合、レンジ( "G6")を=場合。SELECT'は' Then'後に2行に分割する必要があります –

答えて

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 
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