• VBA-VBA中的用户信息交互


    msgbox的用法: 它有多个参数,但常用的就前两个。详情如下表。其实它就是个vba函数 显示全部为(vba.interation.msgbox)

     参数,主要用前两个

     示例

    Sub test()
    Dim i As Integer
    i = MsgBox("您好吗", 1 + 48) '它有返回值,对应的返回值是多少,参考下表
    MsgBox i
    End Sub

    msgbox第二参数的详细表格说明

    inputbox函数:

     示例

    Sub test()
    Dim str '在这里如果定义dim i as integer 那么用户输入只能是数字,否则就会报错
    str = InputBox("请输入名字", "请输入名字", "在这里写") '主要用这三个参数
    MsgBox str
    End Sub

    在vba里还有个方法也是,这个输入方法能控制输入的类型

     示例,在下面只能输入数字,如果输入其他类型,会报出 无效输入类型

    Sub test()
    i = Application.InputBox("输入", , , , , , , 1)
    End Sub

    后面type类型的方法怎么用,如下图 也可以相加,来使用多个类型

     GeOpenFilename的用法

    示例:第一个参数限制打开文件类型,第二个参数默认选择哪个打开方式为第一个,第三,四不常用,最后一个控制是否可以多选,True/False

    Sub test()
    Dim str As String
    Dim wb As Workbook
    str = Application.GetOpenFilename("老表,*.xls,新表,*.xlsx", 2)  '得到打开的某文件的完整路径,然后可以在()内使用参数限制打开的文件类型
    'str = Application.GetOpenFilename("Excel文件,*xls*", 2) '可以这样来统一上面所写的
    '这里需要说明下,如果你没打开文件,Application.getopenfilename 返回的“False”,所以设置一个if来进行控制,以免报错 If str
    <> "False" Then Set wb = Workbooks.Open(str) '如果是进行赋值,就需要用()将后面的参数扩进去 End If '借此就可以对文件进行操作 End Sub

    那么打开多个文件的方式,需要使用数组来接收

    Sub test()
    Dim arr()
    Dim wb As Workbook
    arr = Application.GetOpenFilename("Excel文件,*.xls*", 2, , , True)
    Workbooks.Open arr(1) '在这个存储文件的arr数组里,1就是1,2就是2,和之前的数组不一样,不是从0开始
    MsgBox LBound(arr) '以此验证arr的下表
    End Sub

    完整版:打开多文件

    Sub test()
    Dim arr()
    Dim wb As Workbook
    arr = Application.GetOpenFilename("Excel文件,*.xls*", 2, , , True)
    If arr(i) <> "False" Then
        For i = LBound(arr) To UBound(arr)
            Set wb = Workbooks.Open(arr(i))   
          '可以在此操作

         wb.close Next End If End Sub

    Application.Dialogs的用法:这里面是真实调用的,是excel表的实体功能

    Sub test()
    Application.Dialogs(5).Show
    End Sub

    有两百多个值,仅显示一部分

     最后一点说下加载宏,这个加载宏里面的代码不能出现thisworkbook,因为出现这个 会将代码写进宏文件里,导致无法运行,因此使用使用activeworkbook来说明是当前要操作的文件,取消掉thisworkbook,如下

    Sub test()  '打开多文件,然后进行合并
    Dim str()
    Dim i As Integer
    Dim wb, wb1 As Workbook
    Dim sht As Worksheet
    
    On Error Resume Next '加上以后防止点了取消发生的错误
    Set wb1 = ActiveWorkbook
    Set sht1 = ActiveSheet
    On Error Resume Next
    str = Application.GetOpenFilename("Excel数据文件,*.xls*", , , , True)
    
        For i = LBound(str) To UBound(str)
            Set wb = Workbooks.Open(str(i))
            For Each sht In wb.Sheets
                sht.Copy after:=wb1.Sheets(wb1.Sheets.Count)
                wb1.Sheets(wb1.Sheets.Count).Name = Split(wb.Name, ".")(0) & sht.Name
            Next
            wb.Close
        Next
    End Sub

    进一步在此完善,有时候,用户新建一个excel文件,但是并没有对此进行操作,这时候在打开其他excel文件,这个新建的文件就消失了,因此这个代码在此进行优化

    Sub test() '代码有所改变,作用一样
    Dim arr()
    Dim wb, wb1 As Workbook
    Dim sht As Worksheet
    
    Set wb1 = Workbooks.Add
    arr = Application.GetOpenFilename("Excel数据文件,*.xls*", , , , True)
    If arr(1) <> "False" Then
        For i = LBound(arr) To UBound(arr)
            Set wb = Workbooks.Open(arr(i))
            For Each sht In wb.Sheets
                sht.Copy after:=wb1.Sheets(wb1.Sheets.Count)
                wb1.Sheets(wb1.Sheets.Count).Name = Split(wb.Name, ".")(0) & sht.Name
            Next
            wb.Close
        Next
    End If
    End Sub
  • 相关阅读:
    Query Designer:变量的偏移 Variable Offset
    Query Designer:变量注意事项
    Query Designer:Variable 变量
    Query Designer:Hierarchy层级显示
    Query Designer:公式冲突
    Analyzer中进行货币转换
    Analyzer报表里显示的 * 星号、红叉、#井号的意义
    增量测试
    BW系统之间的InfoProvider数据传输:Export DataSource
    DSO的记录模式Record Mode字段测试
  • 原文地址:https://www.cnblogs.com/xiao-xuan-feng/p/12682342.html
Copyright © 2020-2023  润新知