VBA中的用户信息交互(GetOpenFilename)

Msgbox

参数:
Msgbox(提示文字,按钮类型,标题文字,帮助文件,帮助文件索引)
示例:
MsgBox "你还好吗?", 4 + 32, "打招呼对话框", "C:/a.chm", 0

1.了解Msgbox的第二个参数

Sub tt()
MsgBox "爱你哦", 4 + 48, "我是一个标题"
End Sub

这里4 +48 指显示 是 及 否 按钮和警告图示

常数描述
vbOKOnly0只显示 确定 按钮
VbOKCancel1显示 确定 及 取消 按钮。
VbAbortRetryIgnore2显示 放弃、重试 及 忽略 按钮。
VbYesNoCancel3显示 是、否 及 取消 按钮。
VbYesNo4显示 是 及 否 按钮。
VbRetryCancel5显示 重试 及 取消 按钮。
VbCritical16危险图标
VbQuestion32询问图标
VbExclamation48警告图示
VbInformation64信息图标
vbDefaultButton10第一个按钮是缺省值。
vbDefaultButton2256第二个按钮是缺省值。
vbDefaultButton3512第三个按钮是缺省值。
vbDefaultButton4768第四个按钮是缺省值。
vbApplicationModal0应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作。
vbSystemModal4096系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。
vbMsgBoxHelpButton16384将Help按钮添加到消息框
VbMsgBoxSetForeground65536指定消息框窗口作为前景窗口,就是显示在窗口的最上层
vbMsgBoxRight524288文本为右对齐
vbMsgBoxRtlReading1048576指定文本应为在希伯来和阿拉伯语系统中的从右到左显示

3.Msgbox的返回值

常数说明
vbOK1确定
vbCancel2取消
vbAbort3终止
vbRetry4重试
vbIgnore5忽略
vbYes6
vbNo7

即点击确定,返回1;点击取消,返回2…

Sub tt()
Dim i As Integer
i = MsgBox("爱你哦", 4 + 48, "我是一个标题")

MsgBox i
End Sub

在这里插入图片描述

Inputbox

有两种 inputbox

1.Inputbox函数样式参数


参数:
Inputbox(提示文字,标题文字,默认值,左边距,上边距,帮助文件,帮助文件索引)
示例:
Name = InputBox("请输入姓名", "登陆框", "此处输入", 100, 100, "C:/a.chm", 0)

在这里插入图片描述

2.Inputbox方法样式参数

参数:
Application.Inputbox(提示文字,标题文字,默认值,左边距,上边距,帮助文件,帮助文件索引,输入类型)
示例:
A = Application.InputBox("输入金额", "汇率计算", "此处输入", 100, 100, "C:/a.chm", 0, 1)

这个 inputbox 和上一个的区别就只是参数中多了一个输入类型,可以定义输入的类型

最后一个参数(输入类型):

含义
0公式
1数字
2文本 (字符串)
4逻辑值 (True 或 False)
8单元格引用,作为一个 Range 对象
16错误值,如 #N/A
64数值数组

在这里插入图片描述

GetOpenFilename

参数:
GetOpenFilename (文件类型,优先类型,对话框标题,按钮文字,是否支持多选)
示例:
A= Application.GetOpenFilename("新表,*.xlsx,老表,*.xls", 1, "快特么选啊!", "确定", False)

注意:

  • 这个方法并不会真正打开文件,只是返回文件完整路径!
  • 文件类型参数中,先指定文件类型名,再指定后缀,要成对出现。
  • 优先类型是指文件类型中列出的各种类型,哪种优先显示。
    例如:“Excel文件,.xlsx,老表,.xls,所有文件,.

用户任意选取(多个)文件操作——壳子

Sub tt()
Dim arr()  '数组
Dim wb As Workbook
Dim i As Integer

On Error Resume Next '防止用户取消选取

arr = Application.GetOpenFilename("Excel文件,*.xls*", 2, , , True)  '只能选择excel文件,并且支持同时选多个文件

'选择了多个文件后,返回的文件路径是数组
'注意:但是这里的数组的下标是从1开始


'如果没有选择文件也不报错
If arr(1) <> "False" Then
'打开选中的文件
    For i = LBound(arr) To UBound(arr)
        Set wb = Workbooks.Open(arr(i))
        


            对表的操作
        




            wb.Close
    Next
End If
End Sub

以上代码就是一个壳子,在工作中套用(可以加载为宏,设置一个多表合并按钮,快速完成合并)

对比之前的 Dir 壳子(是遍历文件夹里面的所有文件,返回某文件夹中的所有文件名)

Set—Dir—多文件合并—Find—快速拆分

Sub test()
Dim str As String
Dim wb As Workbook

str = VBA.Dir("C:\data\*.xls*")
For i = 1 To 100
    Set wb = Workbooks.Open("C:\data\" & str)  '将每个表打开(批量操作)
        
        
     	对表的操作   
        
        
        wb.Close                            '关闭
    str = VBA.Dir
    If str = "" Then
        Exit For
    End If
Next
End Sub

以上代码就是一个壳子,在工作中套用(可以加载为宏,设置一个多表合并按钮,快速完成合并)

两个壳子的效果是一样的,区别就是这里GetOpenFilename是用户自己选择想要打开的文件,然后进行操作,更加符合我们的要求

看一下效果
在这里插入图片描述
这里是打开了,又马上关闭。

在套用之前的代码

Sub tt()
Dim arr()  '数组
Dim wb As Workbook
Dim i As Integer

On Error Resume Next '防止用户取消选取

arr = Application.GetOpenFilename("Excel文件,*.xls*", 2, , , True)  '只能选择excel文件,并且支持同时选多个文件

'选择了多个文件后,返回的文件路径是数组
'注意:但是这里的数组的下标是从1开始


'如果没有选择文件也不报错
If arr(1) <> "False" Then
'打开选中的文件
    For i = LBound(arr) To UBound(arr)
        Set wb = Workbooks.Open(arr(i))

            For Each biao In wb.Sheets
                
                biao.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
                
                ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = Split(wb.Name, ".")(0) & "-" & biao.Name
            Next

            wb.Close
    Next
End If
End Sub

在这里插入图片描述

Application.Dialogs

参数:
Dialogs(对话框)
示例:
Application.Dialogs(xlDialogSaveAs).Show
注意:
对话框中所做的操作会真实执行。

最后对GetOpenFilename壳子在修改一点点,让其更容易加载到宏

Set wb1 = Workbooks.Add '新建一个文件,在新建的文件中操作

Sub tt()
Dim arr()  '数组
Dim wb, wb1 As Workbook
Dim i As Integer

On Error Resume Next '防止用户取消选取

Set wb1 = Workbooks.Add '新建一个文件,在新建的文件中操作
arr = Application.GetOpenFilename("Excel文件,*.xls*", 2, , , True)  '只能选择excel文件,并且支持同时选多个文件

'选择了多个文件后,返回的文件路径是数组
'注意:但是这里的数组的下标是从1开始


'如果没有选择文件也不报错
If arr(1) <> "False" Then
'打开选中的文件
    For i = LBound(arr) To UBound(arr)
        Set wb = Workbooks.Open(arr(i))
            For Each biao In wb.Sheets
                
                biao.Copy after:=wb1.Sheets(wb1.Sheets.Count)
                
                wb1.Sheets(wb1.Sheets.Count).Name = Split(wb.Name, ".")(0) & "-" & biao.Name
            Next
            wb.Close
    Next
End If
End Sub
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值