如何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个单元格。 我想这是因为床单被分组。
关于这种行为的任何想法?