14、编程中自定义函数的好处。工作簿是否有密码,工作表是否存在问题,刚好有人问到,两者的思路是一样的,都是错误处理方法,一起放上来吧
Function TestPassword(path) As Boolean '测试函数,测试一个工作簿是否含有密码
Dim wb As Workbook
On Error GoTo line1
Set wb = Workbooks.Open(path, Password:="") '也是利用错误处理方法,打开这个工作簿,密码为空
TestPassword = False '如果没有密码是可以打开的,此时就设置为false
wb.Close
Exit Function
line1:
TestPassword = True '如果有密码,用空密码打开会产生错误,用on error跳转到true
End Function
Sub hjs()
Dim path$, i%
Dim Files
Files = Application.GetOpenFilename("所有文件(*.xls),*.xls", , , , True) '选择一些excel表试验
If Not IsArray(Files) Then Exit Sub '假如没有选择工作簿就退出
For i = 1 To UBound(Files) '对于选择的表,判断是否有密码
MsgBox Files(i) & Chr(13) & Chr(10) & "是否有密码:" & TestPassword(Files(i))
Next
End Sub
2、判断一个工作表是否存在在目前的表里
Function Testsht(shtname As String) As Boolean '判断一个工作表是否存在在目前的表里
On Error GoTo line1
Sheets(shtname).Select '选择工作表,如果可以选择的话就是true,然后退出
Testsht = True
Exit Function
line1:
Testsht = False '如果工作表不存在,则会跳转到line1这里,即为false
End Function
Sub hjs() '随便找一两个名称试试,就知道了
MsgBox Testsht("Sheet1")
MsgBox Testsht("s")
End Sub
3、加一个判断单元格是否有批注的例子
Function Hpizhu(rng As Range) As Boolean '自定义函数,判断一个单元格是否含有批注
Dim s$
On Error GoTo line1 '产生错误的时候跳转到line1行
s = rng.Comment.Text '等于批注的内容,如果有就不会出错哦,如果没有就会出错
Hpizhu = True
Exit Function '必须要,如果不退出,它会继续执行line1哦
line1:
Hpizhu = False
End Function
Sub hjs() '随便找两个试试哦
MsgBox Hpizhu(Range("a1"))
MsgBox Hpizhu(Range("a2"))
End Sub
4、判断一个工作表是否含有密码。
Function Shtp(sht As Worksheet) As Boolean
Dim s$
On Error GoTo line1
s = sht.[iv65536].Delete '删除最后一个单元格,如果保护了就不能删除,否则是可以删除的
Shtp = True
Exit Function
line1:
Shtp = False
End Function
Sub hjs()
MsgBox Shtp(Sheets("sheet1"))
MsgBox Shtp(Sheets("sheet2"))
End Sub
[此贴子已经被作者于2005-9-14 11:21:48编辑过] |