搜索
写经验 领红包
 > 房产

vba如何判断某单元格是否为数值类型(vba判断单元格的值是不是某个值)

导语:VBA如何判断某单元格是否为数值

【分享成果,随喜正能量】如果必须同时做很多事,起码在某个时间段专注做一件事。专注才能高效。抓住重点,分清主次。不要眉毛胡子一把抓。。

《VBA代码解决方案》(10028096)这套教程是我最早推出的教程,目前已经是第二版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一下把自己喜欢的代码摆好。

这套教程共三册,一百四十七讲,内容覆盖较广,也是初级和中级间的过度教程,改版后的内容主要是提供程序源码文件及代码修正为32位和64位兼用代码。今后一段时间会给大家陆续推出。今日的内容是第54讲:VBA如何判断某单元格是否为数值

第五十五讲 VBA代码中,如何判断是否为数值

大家好,我们今日继续讲解VBA代码解决方案的第55讲内容:VBA代码中,如何判断是否为数值。本节的利用价值非常大,在INPUTBOX中,在窗口的控件中,这种判断会随处可见,这里需要大家注意点是在VBA中和EXCEL中判断数值的函数是不一样的,大家是否还记得在EXCEL函数中利用的函数吗?对了,是ISNUMBER()函数,这个函数在EXCEL中可以判断单元格是否为数值,或者判断数组的值,但是在VBA中这个函数是不可以用的。

1 IsNumeric函数讲解

在VBA中我们使用IsNumeric函数可以判断表达式的运算结果是否为数值,IsNumeric函数返回Boolean值,指出表达式的运算结果是否为数值。

语法如下:IsNumeric(expression)

参数expression是必须的,Variant类型,包含数值表达式或字符串表达式。

判断的结果:如果参数expression的运算结果为数字,则IsNumeric返回True,否则返回False

需要注意点:IsNumeric()函数的实际作用是判断参数表达式是否是数值,而这个所谓的“数值”不仅仅包含普通的数字,还包括(但可能不限于)如下情况:

a) 科学计数法表达式,如“2e7”和“2d7”;

b) 十六进制数,如“&H0A”;

c) 八进制数,如“&6”;

d) 当前区域下设置的货币金额表达式,如“¥12.44”;

e) 加圆括号的数字,如“(34)”;

f) 显式指定正负的数字,如“+2.1”和“-2.1”;

g) 含有逗号的数字字符串,如“12,25”。

2 使用IsNumeric函数判断某单元格是否为数值的代码

如下面的代码所示。

Sub mynz_55 ()

Dim i As Integer

Dim n As String

Dim s As String

With Sheets(&34;)

For i = 1 To .Range(&34;).End(xlUp).Row

If IsNumeric(.Cells(i, 1)) Then

n = n & .Cells(i, 1).Address(0, 0) & Chr(9) & .Cells(i, 1) & Chr(13)

Else

s = s & .Cells(i, 1).Address(0, 0) & Chr(9) & .Cells(i, 1) & Chr(13)

End If

Next

End With

MsgBox &34; & Chr(13) & n & Chr(13) _

& &34; & Chr(13) & s

End Sub

代码窗口:

代码解析:mynz_55过程使用IsNumeric函数判断工作表的A列单元格是否为数值,并使用消息框显示。

1)第7行代码判断工作表的A列单元格是否为数值。

2)第8行代码将数值单元格的地址和数值保存在变量 e中。

3)第10行代码将非数值单元格的地址和内容保存在变量 s中。在保存时插入制表符对数据列进行分隔,使之排列整齐.

窗口:

测试结果:

今日内容回向:

1 判断是数值的函数在EXCEL和VBA中有什么不同?(ISNUMBER()函数是工作表函数;IsNumeric函数是VBA函数)

2 上述讲解中特别注意点是是否清楚了呢?

本讲内容参考程序文件:VBA代码解决方案修订(49-98).xlsm

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

【分享成果,随喜正能量】不断做减法。少做点事,做自己喜欢的事,做重要的事。实在忙不过来,把最重要的事情做了,其他的随他去。自知之明。知道哪些事是你做不好的,那就别做。。

本文内容由小媛整理编辑!