2017-06-26 46 views
0

看起来像“application.worksheetfunction.CountA(range)= 0”适用于每个人,但我检查范围是否为空。检查范围是否为空使用excel vba

我打开了一个新的excel表,并把E2放在23。这就是我所做的一切。下面是我用来测试该方法的代码。

Sub test() 
MsgBox Application.WorksheetFunction.CountA(Sheet1.Columns("A:D")) 
MsgBox Application.WorksheetFunction.CountA(Sheet1.Columns("A:E")) 
End Sub 

我得到156而不是0从第一个msgbox和197从第二个msgbox。

任何想法为什么?

谢谢。

+2

新的Excel工作表是否为Sheet1?这是一个全新的工作手册? – jamheadart

+1

^^并且您的代码期望工作表具有“Sheet1”的“CodeName”,而不仅仅是“Sheet1”的“Name”。 – YowE3K

+0

您是否有其他Excel文件同时打开?如果是这样,你将代码放在哪个模块中,以及在什么** VBAProject **中? (左上窗格)。完全关闭Excel并打开一个文件后再试一次 –

回答

0

为避免此类问题,请不要通过其CodeName(Sheet1)引用工作表。相反,请使用工作表名称进行参考:

Dim ws As Worksheet 
Set ws = ThisWorkbook.Worksheets("MySheet") 
MsgBox Application.WorksheetFunction.CountA(ws.Columns("A:D"))