VBA(宏)有什么用?看了这几个示例就明白了!


excel为我们提供了很多好用的功能和函数,但还是有很多工作无法用现有功能和函数批量完成,比如多个excel表格的合并与拆分。而借助VBA语言编写的宏代码,这些看似无法批量处理或无法完成的事情,瞬间变得只是小菜一碟,也许你不懂VBA,也建议先收藏起来这些代码备用。


第1个示例中,演示了VBA代码的使用方法,后面示例均和第1个类似,不再具体演示


1、一次取消所有工作表的隐藏

Excel可以一次隐藏多个工作表,但取消工作表隐藏却需要一个个的设置,用VBA编写一段代码,一秒完成!

注意

  •   要想使用VBA功能,需要把代码粘贴到添加的模块中,详见动画演示

  •   要想保存VBA代码,需要把文件另存为xlsm格式文件,详见动画演示


动画演示:


代码:


Sub 取消隐藏()

For x = 1 To Sheets.Count

If Sheets(x).Name <> “总表” Then

   Sheets(x).Visible = -1

End If

Next x

End Sub


Sub 隐藏()

For x = 1 To Sheets.Count

If Sheets(x).Name <> “总表” Then

   Sheets(x).Visible = 0

End If

Next x

End Sub



2、根据模板批量生成日报表

根据模板批量生成报表,没什么好方法,只能一个一个的复制然后修改名称。但这对VBA来说,只需点一下按钮即可瞬间完成。




代码:


Sub 生成报表()

 Dim x As Integer

 Dim sh As Worksheet

 For x = 1 To 31

   Set sh = Sheets.Add

   With sh

    .Name = x & “日”

    Sheets(“日报模板”).Range(“1:15”).Copy sh.Range(“A1”)

   End With

 Next x

End Sub



3、拆分工作表为单独的excel文件

把当前excel文件中除第1个工作外的所有工作表,均保存为单独的excel文件到3月文件夹中。

拆分演示(在拆分过程中会画面会停几秒,请耐心等待



代码:


Sub 拆分表格()

 Dim x As Integer

 Dim wb As Workbook

 Application.ScreenUpdating = False

 For x = 2 To 32

   Sheets(x).Copy

   Set wb = ActiveWorkbook

   With wb

    .SaveAs ThisWorkbook.Path & “/3月/” & Sheets(x).Name & “.xlsx”

    .Close True

   End With

 Next x

 Application.ScreenUpdating = True

End Sub



4、合并多个Excel文件工作表到一个文件中

3月文件夹下有N张报表,要求把该文件夹中所有excel文件的第1个工作表合并到当前的excel文件中,以单独的工作表存放。



代码:


Sub 合并表格()

 Dim mypath As String

 Dim f As String

 Dim ribao As Workbook

 Application.ScreenUpdating = False

 mypath = ThisWorkbook.Path & “/3月/”

 f = Dir(ThisWorkbook.Path & “/3月/*.xlsx”)

 Do

   Workbooks.Open (mypath & f)

   With ActiveWorkbook

     .Sheets(1).Move after:=ThisWorkbook.Sheets(Sheets.Count)

   End With

   f = Dir

 Loop Until Len(f) = 0

 Application.ScreenUpdating = True

End Sub


兰色说:从事财务、成本核算、数据分析等岗位的同学,如果有时间一定要学学VBA编程,学会后你就知道它可以帮你提高数倍的工作效率。另外新手看VBA如天书,其实入门后就没那么神秘了。多长时间能入门?如果有人指导,一个月时间足够!


如果你是同学,长按下面二维码 – 识别图中二维码 – 关注,就可以每天和兰色一起学Excel了。


本篇文章来源于微信公众号: Excel精英培训

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注