前言:
现时同学们对“excelvba判断单元格为空”大体比较注重,看官们都需要了解一些“excelvba判断单元格为空”的相关文章。那么小编也在网上搜集了一些有关“excelvba判断单元格为空””的相关文章,希望姐妹们能喜欢,小伙伴们快快来了解一下吧!处理excel表格经常会遇到各种公式使用造成的错误值。有些是使用不当造成的,有些是数据丢失造成的,原因很多。本文不研究错误产生的原因,研究一下怎么生成错误值,并检测琐是否有错误值。虽然不经常用公式,但是要检测和消除这些公式也是个麻烦事。
先上代码。
第1步:直接在sheet3中生成7种错误值:
Sub test()myArray = Array(xlErrDiv0, xlErrNA, xlErrName, xlErrNull, _ xlErrNum, xlErrRef, xlErrValue)For i = 2 To 8 Worksheets("Sheet3").Cells(i, 1).Value = CVErr(myArray(i - 1))Next iEnd Sub'探索3000作品
得到下图:
第2步:检测error值
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click Dim ws = (New excel).activesheet() Dim arr = ws.Getgrid("A2:A8") For i = 1 To UBound(arr, 1) ws.cells(i + 1, "B") = "'" + CStr(arr(i, 1)) Next '探索3000原创代码 End Sub
以上代码中可以在图1中把A列错误值显示出来。使用了CStr(arr(i, 1))字符形式。
结论:这七种错误值都是常数
常数值
#DIV/0!
-2146826281
#N/A
-2146826246
#NAME?
-2146826259
#NULL!
-2146826288
#NUM!
-2146826252
#REF!
-2146826265
#VALUE!
-2146826273
如何利用这些常数值来检测错误呢:
再来做个小函数:
Function check单元格error值(格 As Object) Dim dict As New Dictionary(Of Integer, String) dict.Add(-2146826281, "#DIV/0!") dict.Add(-2146826246, "#N/A") dict.Add(-2146826259, "#NAME?") dict.Add(-2146826288, "#NULL!") dict.Add(-2146826252, "#NUM!") dict.Add(-2146826265, "#REF!") dict.Add(-2146826273, "#VALUE!") Dim s As String If dict.ContainsKey(格.value) Then s = dict(格.value) Else s = "" End If Return s End Function '探索3000原创代码
以上代码很简单,就是把单元格对应的错误名(字符型)找出来,如果找不到,直接返回空字符串。
这个函数可以方便转化为vba功能,有vba基础的几乎可以直接用。补充说明:
1,我不用vba来写,就是不想再写vba支持库了,写烦了。旧的也要换的。
2,改用vbnet写,代码看得更舒服,也能用上Visual Studio这个号称“宇宙第一IDE编辑器”的神器了。无论是类库的组织管理还是代码编辑都更直观,也方便理清思路。
3,以前老有网友在我贴文下说什么年代还用vba,现在用vbnet就几乎没有人说了。
4,有人说为什么不用C#,只因为我用vbnet来重写vba,这样老vba用户更有代入感,代码上更亲切。C#来做开发excel二开其实更麻烦。vbnet开发比vba,vb6更省代码,功能和速度更强。
标签: #excelvba判断单元格为空