VBA学习系列

文章目录

        • 工作表
        • 单元格

在办公自动化方面,目前Python那可谓是相当的火,但是在用Python操作Office三件套的时候,有些功能还是无法实现,且可移植性较差,当然,这不光是Python自己的问题。 最近在使用Word的时候遇到了批量排版的问题,就在B站找了使用python-docx批量操作Word的视频看了一下,但是发现用起来还是有点弱鸡,有些功能还是无法实现;当然,用pandas操作Excel还是挺Six的。VBA是微软为了操作Office系列专门生的亲儿子,与Office的适配性那肯定是毋庸置疑的,目前网上最近有很多的文章在唱衰VB,对VB不太懂,所以在这不多做讨论。虽然微软对VBA早已停止更新了,但是只要Office三件套在办公领域存在一天,VBA是肯定不会死掉的,这一点是毋庸置疑的,为了在以后工作的时候能够不把时间浪费在一些重复性的工作中,懂得对VBA的基本使用还是有非常大的益处的,但是刚开始接触,发现VBA的方法和属性真的好繁杂,脑壳疼壳疼。下面是学习VBA过程记录的一些常用操作,希望和各位道友共同交流学习,下面只是一小部分内容,日后慢慢更吧。

工作表

'批量添加工作表sheet
Sub add_sheets()
    Dim i As Integer
    Sheets.Add Count:=3
    For i = 1 To 3
        Sheets(i).Name = "table" & i
    Next
End Sub
'批量删除工作表sheet
Sub delete_sheets()
    Excel.Application.DisplayAlerts = False
        For i = 1 To Sheets.Count - 1
        Sheets(1).Delete
    Next
    Excel.Application.DisplayAlerts = False
End Sub
'批量获取表名
Sub get_sheet_names()
    Dim i As Integer
    For i = 1 To Sheets.Count
        Sheet1.Range("A" & i) = Sheets(i).Name
    Next
End Sub
'批量添加sheet name,并在固定单元格添加数值
Sub add_sheet_name()
    Dim i As Integer
    For i = 1 To 31
        Sheet1.Copy after:=Sheets(Sheets.Count)
        Sheets(Sheets.Count).Name = "1月" & i & "日"
        Sheets(Sheets.Count).Range("a5") = "2021-1-" & i
    Next
End Sub

'删除多个工作表
Sub delete_some_sheets()
    Excel.Application.DisplayAlerts = False
    Dim sheet As Worksheet
    For Each sheet In Sheets
        If sheet.Name <> "No Delete" Then
            sheet.Delete
        End If
    Next
    Excel.Application.DisplayAlerts = False
End Sub
Sub open_file()
    Application.DisplayAlerts = False
    Workbooks.Open Filename:="file_path"
    ActiveWorkbook.Sheets(1).Range("A1") = "CSDN"
    Active.Workbook.Save
    'Active.Workbook.Close
    Application.DisplayAlerts = False
End Sub
'拆分表格中的多个sheet为单个文件
Sub spilt_sheet()
    Dim sheet As Worksheet
    For Each sheet In Sheets
    sheet.Copy
        ActiveWorkbook.SaveAs Filename:="path\" & sheet.Name & ".xlsx"
    ActiveWorkbook.Close
    Next
End Sub

单元格

Sub operate_cells()
    [A1]
    '表示A1单元格,此类写法无法传变量
    cells(1,1)
    '表示第一行第一列单元格
    range("a10")
    range("a10").value
    range("A1").offset(0,1)
    'A1单元格向下偏移0行,向右偏移1列
    Range("a10").End(*).Select
	'*可传4个参数xlUp/xlDown/xlToLeft/xlToRight任意一个(在Excel中表示双击某一单元格上/下/左/右边界,会自动选中sheet表中数据集的边界单元格)
	range("A10").EntireRow.Select
	'选取整行单元格,EntireColumn即为选中整列
	Range("A1").Resize(4, 5).Select
    '选中从A1单元格开始的向下4行,向右5列
End Sub

你可能感兴趣的:(笔记,excel,vba)