2017-12-08 17 views

答えて

3

End Subのを試してみてください(あなたが明示的にワークシート名を述べるすることもできますので、暗黙的にアクティブなシートを参照ん。)これが最後の行が使用されます、次のそして、列のExcel、これまでどのバージョンのためにあなたが使用している:

Sub IsActiveSheetEmpty() 

    If WorksheetFunction.CountA(Range(Cells(2, "A"), Cells(Cells.Rows.Count, Cells.Columns.Count))) = 0 Then 
     MsgBox ActiveSheet.Name & " is empty" 
    Else 
     MsgBox ActiveSheet.Name & " is not empty" 
    End If 

End Sub 
+0

言及は私の票を取得する行と列の残りの部分をチェックするために期待されていました! –

+0

@ Mat'sMug私は暗黙の参照で私の強迫観念のためRubberDuckに感謝します! – QHarr

0
Sub IsActiveSheetEmpty() 
If WorksheetFunction.CountA("A2:A5") = 0 Then 'skips A1 
    MsgBox ActiveSheet.Name & " is empty" 
Else 
    MsgBox ActiveSheet.Name & " is not empty" 
End If 

+0

おかげ@pokemon_Man、そして質問のため申し訳ありませんが、私は '完全に行をスキップして、暗黙のActiveSheet参照の – dhanya

1

はのように思えますそれはサブ関数ではなくブール値を返す関数でなければなりませんが、

Option explicit 

Sub IsActiveSheetEmpty() 

Dim ws as worksheet 
Set ws = Activesheet 

With ws 

If application.CountA(.range(.range("B1"),.cells(.rows.count,.columns.count))) = 0 Then 
MsgBox .Name & " is empty" 
Else 
MsgBox .Name & " is not empty" 
End If 

End with 

End Sub 

モバイルで書かれています。それはあなたが望むことをしますか?

編集:列Aを意味すると思いますか?

1
Option Explicit 
Sub IsActiveSheetEmpty() 
    Dim myRange As Range 
    Set myRange = Range("A2",Cells(2,1).SpecialCells(XlCellType.xlCellTypeLastCell)) 

    If WorksheetFunction.CountA(myRange) = 0 Then 
     MsgBox ActiveSheet.Name & " is empty" 
    Else 
     MsgBox ActiveSheet.Name & " is not empty" 
    End If 
End Sub 
関連する問題