一、消息框MsgBox
1、官方语法说明
MsgBox (prompt, [ buttons, ] [ title, ] [ helpfile, context ])
MsgBox 函数语法具有以下命名参数:
部分 | 说明 |
prompt | 必需项。 字符串表达式在对话框中显示为消息。 prompt 的最大长度约为 1024 个字符,具体取决于所使用的字符的宽度。 如果 prompt 包含多行, 可以使用回车符 (Chr (13) ) 、换行符 (Chr (10) ) 或回车符 - 换行符组合 (Chr (13) &Chr (10) ) 来分隔各行。 |
buttons | 可选。 数值表达式,用于指定要显示按钮的数量和类型、要使用的图标样式、默认按钮的标识和消息框的形式的值的组合。 如果省略,则 buttons 的默认值为 0。 |
title | 可选。 对话框标题栏中显示的字符串表达式。 如果省略 title,则标题栏中将显示应用程序名称。 |
helpfile | 可选。 用于标识帮助文件的字符串表达式,前者用于为对话框提供上下文相关的帮助。 如果提供 helpfile,则也必须提供 context。 |
context | 可选。 帮助上下文数值的数值表达式,该数值由帮助作者为相应的帮助主题分配。 如果提供 context,则也必须提供 helpfile。 |
通俗理解语法:
MsgBox (显示的字符串, [ 消息框的类型样式, ] [ 消息框标头, ] [ 帮助文件题头, 帮助文件说明 ])
仅做为消息框提示的话通常使用到的都是参数一和二,后面参数都是省略,例:
Sub vba19msgbox1()
'MsgBox ("试运行")
MsgBox "试运行", vbYesNoCancel + 64 + 0 + 0
End Sub
运行结果显示"试运行"消息框、消息框标题样式为参数二设置(多个设置用+号连接),关于参数二buttons官方说明:
参数设置包括:
常量 | 值 | 说明 |
vbOKOnly | 0 | 仅显示“确定”按钮。 |
vbOKCancel | 1 | 显示“确定”和“取消”按钮。 |
vbAbortRetryIgnore | 2 | 显示“中止”、“重试”和“忽略”按钮。 |
vbYesNoCancel | 3 | 显示“是”、“否”和“取消”按钮。 |
vbYesNo | 4 | 显示“是”和“否”按钮。 |
vbRetryCancel | 5 | 显示“重试”和“取消”按钮。 |
vbCritical | 16 | 显示“关键消息”图标。 |
vbQuestion | 32 | 显示“警告查询”图标。 |
vbExclamation | 48 | 显示“警告消息”图标。 |
vbInformation | 64 | 显示“信息消息”图标。 |
vbDefaultButton1 | 0 | 第一个按钮是默认按钮。 |
vbDefaultButton2 | 256 | 第二个按钮是默认按钮。 |
vbDefaultButton3 | 512 | 第三个按钮是默认按钮。 |
vbDefaultButton4 | 768 | 第四个按钮是默认按钮。 |
vbApplicationModal | 0 | 应用程序模式;用户在继续在当前应用程序中工作前必须响应消息框。 |
vbSystemModal | 4096 | 系统模式;在用户响应消息框前,所有应用程序都挂起。 |
vbMsgBoxHelpButton | 16384 | 在消息框中添加“帮助”按钮。 |
vbMsgBoxSetForeground | 65536 | 将消息框窗口指定为前景窗口。 |
vbMsgBoxRight | 524288 | 文本右对齐。 |
vbMsgBoxRtlReading | 1048576 | 指定文本在希伯来语和阿拉伯语系统中应从右到左显示。 |
第一组值 (0-5) 表示对话框中显示的按钮的数量和类型;第二组值(16、32、48、64)表示图标样式;第三组值(0、256、512)用于确定默认按钮;第四组值(0、4096)用于确定消息框的形式。 合并数字以创建最终 buttons 参数值时,只是用每个组中的其中一个数值。
来自 <MsgBox 函数 (Visual Basic for Applications) | Microsoft Learn>
2.关于消息框返回值
返回值在 VbMsgBoxResult (第一组值0-5)枚举中定义。
常量 | 值 | 说明 |
vbOK | 1 | 确定 |
vbCancel | 2 | Cancel |
vbAbort | 3 | 中止 |
vbRetry | 4 | 重试 |
vbIgnore | 5 | 忽略 |
vbYes | 6 | 是 |
vbNo | 7 | 否 |
Sub vba19msgxbox2()
Dim str1 As Integer
str1 = MsgBox("选择返回值", 4) '4参数只有"是"与"否"
Select Case str1
Case Is = 6
MsgBox "选择了是"
Case Is = 7
MsgBox "选择了否"
End Select
End Sub
二、交互框inputbox
1.InputBox 函数与方法
交互型INPUTBOX函数官方语法说明:
InputBox (prompt, [ title ], [ default ], [ xpos ], [ ypos ], [ helpfile, context ])
InputBox 函数包含以下命名参数:
Part | 说明 |
prompt | 必需项。 字符串表达式在对话框中显示为消息。 prompt 的最大长度约为 1024 个字符,具体取决于所使用的字符的宽度。 如果 prompt 包含多行, 可以使用回车符 (Chr (13) ) 、换行符 (Chr (10) ) 或回车换行符组合 ( (Chr (13) & (Chr (10) ) 来分隔各行。 |
title | 可选。 对话框标题栏中显示的字符串表达式。 如果省略 title,则标题栏中将显示应用程序名称。 |
default | 可选。 文本框中显示的字符串表达式,在未提供其他输入时作为默认响应。 如果省略了 default,文本框将显示为空。 |
xpos | 可选。 指定对话框的左边缘与屏幕的左边缘的水平距离(以缇为单位)的数值表达式。 如果省略了 xpos,对话框将水平居中。 |
ypos | 可选。 指定对话框的上边缘与屏幕的顶部的垂直距离(以缇为单位)的数值表达式。 如果省略了 ypos,对话框将位于屏幕垂直方向往下大约三分之一的位置。 |
helpfile | 可选。 用于标识帮助文件的字符串表达式,前者用于为对话框提供上下文相关的帮助。 如果提供 helpfile,则也必须提供 context。 |
context | 可选。 帮助上下文数值的数值表达式,该数值由帮助作者为相应的帮助主题分配。 如果提供 context,则也必须提供 helpfile。 |
交互型INPUTBOX方法官方说明:
Application.InputBox 方法 (Excel)
expression.InputBox (Prompt, Title, Default, Left, Top, HelpFile, HelpContextID, Type)
expression:表示 Application 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
Prompt | 必需 | String | 要在对话框中显示的消息。 此参数可以是字符串、数字、日期或布尔值(在消息显示前,Microsoft Excel 会自动将此值强制转换为 String )。 最大长度为 255 个字符,否则不会出现提示,应用程序的方法将立即返回错误 2015。 |
Title | 可选 | Variant | 输入框的标题。 如果省略此参数,则默认标题为“输入”。 |
Default | 可选 | Variant | 指定在对话框最初显示时文本框中显示的值。 如果省略此参数,即表示将文本框留空。 此值可以是 Range 对象。 |
Left | 可选 | Variant | 指定对话框相对于屏幕左上角的 X 坐标(以磅为单位)。 |
Top | 可选 | Variant | 指定对话框相对于屏幕左上角的 Y 坐标(以磅为单位)。 |
HelpFile | 可选 | Variant | 此输入框使用的帮助文件名。 如果有 HelpFile 和 HelpContextID 参数,对话框中会显示帮助按钮。 |
HelpContextID | 可选 | Variant | HelpFile 中帮助主题的上下文 ID 号。 |
Type | 可选 | Variant | 指定返回的数据类型。 如果省略此参数,则对话框返回文本。 |
备注:下表列出了可以在 Type 参数中传递的值。 可以是一个值,也可以将多个值相加。 例如,对于可接受文本和数字的输入框,将 Type 设置为 1 + 2。
值 | 说明 |
0 | 公式 |
1 | 数字 |
2 | 文本(字符串) |
4 | 逻辑值(True 或 False) |
8 | Range 对象形式的单元格引用 |
16 | 错误值,如 #N/A |
64 | 数值数组 |
来自 <Application.InputBox 方法 (Excel) | Microsoft Learn>
来自 <InputBox 函数 (Visual Basic for Applications) | Microsoft Learn>
通俗理解:
简单的输入输出用INPUTBOX函数就能解决,另在INPUTBOX函数输入的类型不匹配的情况下会报错,故使用INPUTBOX方法会更好处理一些:
Application.InputBox (显示的字串符, 消息框题头, 默认值, Left坐标, Top坐标, 帮助文件名, 帮助文件ID号, 返回指定数型Type)
使用过程可以参数=XX这样跳过中间的参数,提定类型可以相加使用,如TYPE:=1+2
消息框位置默认不要调就是居中。如有些版本一开始可能在左上或右下的。手动把他移回中间。下次默认出现就是上一次的位置。使用TYPE类型为对象时记得用SET
例:
Sub VBA19inputbox1()
Dim str2
Dim range1 As Range
str2 = InputBox(PROMPT:="请输入字符串", Title:="题头", Default:=1)
'MsgBox str2
On Error GoTo vba19inputbox2 '如接下来未选择或取消直接结束SUB
Set range1 = Application.InputBox("请选择单元格", "输出的单元格", "$A$1", Type:=8)
range1.Value = str2
vba19inputbox2:
End Sub
三、自带选择框Scripting.FileSystemObject
1、提供对计算机文件系统的访问权限。通常用来处理文件夹一类会用到,使用前需创建CreateObject 函数返回 FileSystemObject (fs)对象来应用:
例:在本文本下创建一个TXT
Sub VBA19CO1()
Dim fs As Object
Dim a
Set fs = CreateObject("Scripting.FileSystemObject") '创建一个操作对象
Set a = fs.CreateTextFile(ThisWorkbook.Path & "\1.txt", True) '创建一个TXT
a.WriteLine ("TXT第一行写入东西." & Chr(13) & "第二行") '写入
a.Close '关闭
Set a = Nothing
Set fs = Nothing
End Sub
Scripting.FileSystemObject官方语法在之前VBA8:来自 <VBA(8)工作本/表及文件操作_vba 本表_之之之之杰的博客-CSDN博客>
2、CreateObject("shell.application") 调用:用户选择的目标文件夹框调用Shell.BrowseForFolder 方法来实现:
例:将选择的文件夹下的子文件夹名输出在A列
Sub VBA19CO2()
Dim fs2, fld, sh2
Dim arr(1 To 999), k As Integer
Set fs2 = CreateObject("scripting.filesystemobject")
Set sh2 = CreateObject("shell.application") 'shell对象
Set fld = fs2.getfolder(sh2.browseforfolder(0, "选择文件夹", 0, "").self.Path & "")
'创建SHELL对象用browseforfolder选择文件夹再给于getfolder获取文件夹名
For Each fd In fld.subfolders '将选择的文件夹下的子文件夹名取出
k = k + 1
arr(k) = fd.Name
Next
Range("a1").Resize(k) = Application.Transpose(arr) '子文件夹名放在本工作本A列
End Sub
3、GetOpenFilename 方法:显示打开文件对话框,并获取文件名,而不必真正打开任何文件。
expression.GetOpenFilename (FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
参数
名称 | 必需/可选 | 数据类型 | 说明 |
FileFilter | 可选 | Variant | 指定文件筛选条件的字符串。 |
FilterIndex | 可选 | Variant | 指定默认文件筛选条件的索引号,编号从 1 直到 FileFilter 中指定的筛选器编号。 如果此参数被省略或大于存在的筛选器数,使用的是第一个文件筛选器。 |
Title | 可选 | Variant | 指定对话框的标题。 如果此参数被省略,标题为“打开”。 |
ButtonText | 可选 | Variant | 仅限 Macintosh。 |
MultiSelect | 可选 | Variant | 若为 True,允许选择多个文件名。 若为 False,仅允许选择一个文件名。 默认值为 False。 |
application.GetOpenFilename (指定文件类型, 默认索引号 ,标头, Buttontext,是否多选)
指定文件类型省略则为所有文件(*.*)
例:将选择的路径文件名输出在A列
Sub VBA19CO3()
Dim filename
Dim k2 As Integer
filename = Application.GetOpenFilename(, , "标头", , True) '标头及多选
For k2 = 1 To UBound(filename) '多选后成数组
Cells(k2, 1) = filename(k2) '输出在A列
Next
End Sub
如须提取文件名或提取目录下所有文件包括子目录参考本站内另一文的文件提取思路来自 <VBA(10)导入图片,但是多文件夹例子_vba引用图片-CSDN博客>