Excel VBA笔记

Excel VBA 笔记

1、Sheet表的增、删、复制

'添加100个sheet
Sub addSheet()
	Sheets.Add Count:=100
End Sub

'删除100个sheet
Sub deleteSheet()
	Dim i as integer
	'取消删除警告弹窗
    Excel.Application.DisplayAlerts = False
    For i = 1 To 100
        Sheets(1).delete
    Next
    Excel.Application.DisplayAlerts = True
End Sub

'复制sheet
Sub copySheet()
    Sheets(1).copy after:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = "haha"
End Sub


2、forEach的用法

不适合操作单元格,麻烦一点。
适合操作工作表


Sub forDemo()
    Excel.Application.DisplayAlerts = False
    Dim sht As Worksheet
    For Each sht In Sheets
        If sht.Name <> "不能删" Then
            sht.delete
        End If
    Next
    Excel.Application.DisplayAlerts = True
End Sub

3、操作文件

Sub openFile()
    '关闭屏幕更新,后台运行。
    Application.ScreenUpdating = False
    '关闭屏幕警告
    Application.DisplayAlerts = False
    Workbooks.Open Filename:="文件绝对路径"
    ActiveWorkbook Sheets(1).Range("a1") = "啦啦啦"
    ActiveWorkbook.Save
    Workbooks.Add
    ActiveWorkbook.Sheets(1).Range("a2") = "哈哈新建的"
    ActiveWorkbook.SaveAs Filename:="文件保存路径"
    ActiveWorkbook.Close
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

4、操作单元格对象

Sub test()
    'Range("A1") = "a"
    'Sheets(Range("A1").Value).Select
    
    'A1单元格向下移10格,向右移1格
    Range("A1").Offset(10, 1) = "haha"
    
    'Debug.Print Range("C10").End(xlUp)
    '选中A10整行
    Range("A10").EntireRow.Select
    Range("A10").EntireRow.Delete
    Range("A10").EntireRow.Copy Range("A12")
    '以C10为基准,取19行,10列
    Range("C10").Resize(19, 10).Select
    Range("A10:B19").Copy Range("C10")
    '清空单元格
    Sheets(i).Range("A2:F10000").ClearContents
End Sub

5、用户信息交互:加载宏多文件操作、对话框

Sub test()
    Dim str As String
    Dim wb As Workbook
    Dim sht As Worksheet
    Dim arr()
    'application的InputBox方法可以限制类型。而普通的InputBox函数不能指定
    'str = Application.InputBox("请输入", , , , , , , 1 + 2)
    '获取要打开文件的路径(限制只能看到.xls和.xlsx文件)  2指默认第2个,即表2
    str = Application.GetOpenFilename("Excel文件,*.xls*", 2)
    Debug.Print str
    'True;指 多选
    arr = Application.GetOpenFilename("Excel文件,*.xls*", 2, , , True)
    Debug.Print UBound(arr)
    '新建一个工作簿
    Set wb1 = Workbooks.Add
    If str <> "False" Then
        '打开文件
        Set wb = Workbooks.Open(str)
        For i = LBound(arr) To UBound(arr)
            Set wb = wokbooks.Open(arr(i))
            For Each sht In wb.Sheets
                'ThisWorkbook 指当前运行宏的工作簿。加载宏.xla文件中不要使用ThisWorkbook,可以用ActiveWorkbook
                'sht.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.count)
                'ThisWorkbook.Sheets(Thisworkbook.Sheets.count).Name = Split(wb.Name, ",")(0) & sht.Name
                sht.Copy after:=ThisWorkbook.Sheets(wb1.Sheets.count)
                ThisWorkbook.Sheets(wb1.Sheets.count).Name = Split(wb.Name, ",")(0) & sht.Name
            Next
            wb.Close
        Next
        
    'Application.Dialogs    操作Excel中的所有对话框
    End If
    
End Sub
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值