如何validation组中的工作表是空的还是不包含数据?

我想find一种方法来检查工作表组中的任何工作表是空的还是包含数据。

我试过使用这个,但似乎没有工作。

.Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9")).select If WorksheetFunction.CountA(Selection.UsedRange.Cells) = 0 Then MsgBox "All Sheets empty!" Exit Sub End If 

有两种可能性:

如果纸张“1”到“9”之间没有其他纸张相邻,请使用:

 Sub Demo1() With ThisWorkbook If Evaluate("=COUNTA('[" & .Name & "]1:9'!1:" & .Worksheets("1").Rows.Count & ")") = 0 Then MsgBox "All Sheets empty!" Else MsgBox "All Sheets NOT empty!" End If End With End Sub 

如果纸张“1”到“9”不相邻,或者中间有其他纸张,请使用:
(或者只是使用这个版本)

 Sub Demo2() Dim ws As Worksheet Dim tot As Long For Each ws In ThisWorkbook.Worksheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9")) tot = tot + WorksheetFunction.CountA(ws.Cells) Next If tot = 0 Then MsgBox "All Sheets empty!" Else MsgBox "All Sheets NOT empty!" End If End Sub 

出于某种原因,我能够检查如果工作表是空的,如果我只是使用“单元格”。 不知道为什么这是因为它没有参考任何分组工作表。 如果其他工作簿也打开,可能会失败。

 Sub SheetsEmpty() With ThisWorkbook ' check if sheets are empty. .Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9")).Select If WorksheetFunction.CountA(Cells) = 0 Then Exit Sub End With End Sub 

如果我在监视窗口中添加一个Watch到这个“WorksheetFunction.CountA(Cells)”,它只显示非空单元格的单个计数,而不是所有9个单元格。 我想这是因为床单被分组。

关于这种行为的任何想法?