vba function 可以不设置返回值 vba 自定义function返回值_解决方案


分享成果,随喜真能量。大家好,今天继续和大家分享VBA编程中常用的简单“积木”,第61-65的过程。简单的过程组合起来就是一个复杂的过程,越简单的事物往往越容易理解,我们要认真掌握这些简单的过程,可以为我们复杂的工程服务。这也是我“搭积木”编程的重要思想。

下面是我根据自己20多年的VBA实际利用经验,编写的四部经验教程,这些是较大块的“积木”,可以独立的完成某些或者某类系统的过程,欢迎有需要的朋友联络(WeChat:NZ9668)分享。利用这些可以提高自己的编程效率,选择好积木,搭好积木。

第一套:《VBA代码解决方案》是VBA中各个知识点的讲解,覆盖了绝大多数的知识点。

第二套:《VBA数据库解决方案》是数据处理的利器;

第三套:《VBA数组与字典解决方案》中讲解VBA的精华----字典。

第四套:面向初学及中级以下学员的视频《VBA代码解决方案》正在录制。 “每天20分钟,半年精进VBA”活动正在火热进行中,越早参与,回馈越多。现在第一册48讲内容已经录制完成。录制到第二册58讲的课程。

上述教程中第一、二、三是PDF教程,第四套教程是视频教程。其中视频教程的优惠活动正在进行中。

VBA过程代码61:工作簿的一些通用属性示例3

Sub MyNZ()
 Dim SaveTime As String
 On Error Resume Next
 SaveTime = ActiveWorkbook.BuiltinDocumentProperties("Last Save Time").Value
 If SaveTime = "" Then
 MsgBox ActiveWorkbook.Name & "工作簿未保存."
 Else
 MsgBox "本工作簿已于" & SaveTime & "保存", , ActiveWorkbook.Name
 End If
End Sub

代码的解析说明:上面过程利用BuiltinDocumentProperties属性,返回工作薄的保存信息,类似于在Excel中选择菜单“文件——属性”命令时将会显示一个“属性”对话框,该对话框中包含了当前工作簿的有关信息。


vba function 可以不设置返回值 vba 自定义function返回值_重命名_02


VBA过程代码62:新建一个工作表”HH”

Sub MyNZ()
 On Error Resume Next 
 Worksheets("HH").Activate
 If Err.Number <> 0 Then
 Worksheets.Add after:=Worksheets(Worksheets.Count)
 ActiveSheet.Name = "HH"
 Else
 ActiveSheet.Clear
 End If 
End Sub

代码的解析说明:上面过程利用Worksheets.Add after:=Worksheets(Worksheets.Count)添加一个工作表,并将工作表命名为"HH",如果这个工作表是已经存在的,那么将清空这个工作表。


vba function 可以不设置返回值 vba 自定义function返回值_VBA_03


VBA过程代码63:测试工作簿中是否包含指定工作表

Sub MyNZ()
 MsgBox "测试工作簿中是否存在指定名称的工作表"
 Dim b As Boolean
 b = SheetExists("<指定的工作表名>")
 If b = True Then
 MsgBox "该工作表存在于工作簿中."
 Else
 MsgBox "工作簿中没有这个工作表."
 End If
End Sub
Private Function SheetExists(sname) As Boolean
 Dim x As Object
 On Error Resume Next
 Set x = ActiveWorkbook.Sheets(sname)
 If Err = 0 Then
 SheetExists = True
 Else
 SheetExists = False
 End If
End Function

代码的解析说明:上面的过程利用了一个自定义的函数SheetExists判断是否存在一个指定的工作表。

自定义的函数SheetExists中将指定名称的工作表赋值给变量x,通过赋值过程的错误的返回值来判断是否存在这个工作表。


vba function 可以不设置返回值 vba 自定义function返回值_VBA_04


VBA过程代码64:对未打开的工作簿进行重命名(Name方法)

Sub MyNZ()
 Name "<工作簿路径>/<旧名称>.xlsx" As "<工作簿路径>/<新名称>.xlsx"
End Sub
代码的解析说明:代码中<>中的内容为需要重命名的工作簿所在路径及新旧名称。该方法只是对未打开的文件进行重命名,如果该文件已经打开,使用该方法会提示错误。
VBA过程代码65:设置数字精度(PrecisionAsDisplayed属性)
Sub MyNZ()
 Dim pValue 
 ActiveCell.Value = 1 / 3
 ActiveCell.NumberFormatLocal = "0.00"
 pValue = ActiveCell.Value * 3
 MsgBox "当前单元格中的数字乘以3等于:" & pValue
 ActiveWorkbook.PrecisionAsDisplayed = True
 pValue = ActiveCell.Value * 3
 MsgBox "此时,当前单元格中的数字乘以3等于:" & pValue ActiveWorkbook.PrecisionAsDisplayed = False
End Sub

代码的解析说明:ActiveCell.NumberFormatLocal = "0.00",是设置单元格的格式,PrecisionAsDisplayed属性的值设置为True,则表明采用单元格中所显示的数值进行计算。

上面的例子中可以看出单元格的数值和和单元格的显示值的不同。