excel vba如何取msgbox的值 用VBA如何不打开工作簿取数?

[更新]
·
·
分类:互联网
4985 阅读

excel vba如何取msgbox的值

用VBA如何不打开工作簿取数?

用VBA如何不打开工作簿取数?

不打开对于新手来说没必要,不过非要探讨方法有二:
1、使用数据库模式打开Excel,并使用sql语句读取工作表中的数据
没有调用Excel对象模型,效率会很高
2、根据微软公开的文件结构,自己解析Excel文件取数据
就像java的POI,net的NPOI,以及商业插件aspose一样,高效解析
其中方法二,目前VB6没有成熟的库,个人一直在移植POI到vb6,但是由于库太大,短时间内无法完成

vba怎么判断是否是数字?

在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”。
如下面的代码所示。
Sub MyNumeric()
Dim i As Integer
Dim n As String
Dim s As String
With Sheets(sheet4)
For i 1 To .Range(A65536).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 A列中数值单元格: Chr(13) n Chr(13) _
A列中非数值单元格: Chr(13) s