2014-03-30 52 views
0

我试过这段代码的count,counta和countblank函数,但它不起作用。我的代码是:使用count,counta,countblank函数

Sheet1.Activate 
If WorksheetFunction.CountBlank(Range(Cells(3, 3), Cells(50, 3))) > 0 Then 
MsgBox "First Enter Data!" 
Else 
... 

我想出类拔萃,如果所有的细胞范围C3至C50都含有许多做一些计算,并返回MSGBOX如果他们不。 所有其他代码均为true。我已经检查过几次了。 问题是即使所有这些单元格都有数字,msgbox也会出现。我尝试了很多方法,但它一直在出错。 请帮帮我。非常感谢。

+0

您确定您正在查看权利表吗? – brettdj

回答

1

编辑:

1)如果你的号码存储为文本,使用下面的代码(它更改单元格的格式为 “数字格式”):

Dim rng As Range 
Set rng = ThisWorkbook.Worksheets("Sheet1").Range("C3:C50") 

With rng 
    .NumberFormat = "0.00" 
    .Value = .Value 

    If WorksheetFunction.Count(.Cells) <> .Cells.Count Then 
     MsgBox "First Enter Data!" 
    Else 
     MsgBox "Everything is ok. All cells in range C3:C50 contains numbers" 
    End If 
End With 

2)您也可以使用此之一:

Dim c As Range 
Dim isAllNumbers As Boolean 
isAllNumbers = True 

For Each c In ThisWorkbook.Worksheets("Sheet1").Range("C3:C50") 
    If Not IsNumeric(c) Or c = "" Then 
     isAllNumbers = False 
     Exit For 
    End If 
Next 

If Not isAllNumbers Then 
    MsgBox "First Enter Data!" 
Else 
    MsgBox "Everything is ok. All cells in range C3:C50 contains numbers" 
End If 

您可能还需要阅读此:How to avoid using Select/Active statements

+0

谢谢Simoco。但它会返回msgbox EVEN,这些单元格中有数字。 :-( – user3466971

+0

它返回什么信息?我在代码中添加了msgbox,当所有单元格都是数字'“一切正常,范围C3:C50中的所有单元格都包含数字”'。如果您不想要以显示此消息 –

+0

编号它返回“首先输入数据!有些单元格是......”我不知道为什么 – user3466971