VBA19消息框(msgbox/inputbox/交互框)

一、消息框MsgBox

1、官方语法说明

MsgBox (prompt, [ buttons, ] [ title, ] [ helpfilecontext ])

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) 表示对话框中显示的按钮的数量和类型;第二组值(16324864)表示图标样式;第三组值(0256512)用于确定默认按钮;第四组值(04096)用于确定消息框的形式。 合并数字以创建最终 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 (prompttitle ]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 (PromptTitleDefaultLeftTopHelpFileHelpContextIDType)

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博客>

2CreateObject("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

 

3GetOpenFilename 方法:显示打开文件对话框,并获取文件名,而不必真正打开任何文件。

 

expression.GetOpenFilename (FileFilterFilterIndexTitleButtonTextMultiSelect)

参数

名称

必需/可选

数据类型

说明

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博客>

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值