首页 > 解决方案 > VBA 宏可以是函数还是子函数?

问题描述

我从https://gallery.technet.microsoft.com/office/Save-attachments-from-5b6bf54b.bas导入了一个文件,但意识到该功能没有显示为宏,例如在功能区菜单开发人员/宏中SaveAttachmentsFromSelection

在我把它改成一个后它确实出现了subroutine

VBA 宏可以是函数吗?

标签: vbaoutlook

解决方案


宏对话框仅列出不带参数的非私有子例程。

例子

Option Explicit
' this will show
Public Sub Public_Example()
    Debug.Print "Hello Public " ' print on immediate window
End Sub

' and this will show
Sub Public_Example()
    Debug.Print "Hello Public " ' print on immediate window
End Sub

如果将子程序声明为 Private,则返回任何值或Not的函数和带参数的子程序将不会显示在“宏”对话框中

例子

Option Explicit
' this will not show
Public Sub Public_Example(Miserable As Integer)
    Debug.Print "Hello Private " ' print on immediate window
End Sub


' this will not show
Private Sub Private_Example()
    Debug.Print "Hello Private " ' print on immediate window
End Sub


' this will not show
Public Function Public_Example()
    Debug.Print "Hello Private " ' print on immediate window
End Function


' this will not show
Private Function Private_Example()
    Debug.Print "Hello Private " ' print on immediate window
End Function

推荐阅读