兰色曾对很多Excel技巧和函数高手说,千万别学宏。因为一旦爱上宏编程,Excel圈里很快就会少了一个技巧或函数高手!Why? 耐心看下去你就会明白。
一、什么是宏?
先举个例子:
选取B列并复制
选取C列右键 - 选择性粘贴 - 加
完成!
如上,你在Excel中进行的一系列的操作过程,就是一个宏。操作过程(宏)可以是一步也可以是若干步,使用一个Excel命令或多个Excel命令。
宏,我们也可以看成是一个个可以完成特定目标的功能
二、为什么学习宏?
Excel提供了很多功能,可以完成各种操作。筛选数据有自动筛选和高级筛选,汇总数据有分类汇总、数据透视表等.......
批量取消工作表隐藏
批量合作多个工作表或Excel文件
批量......
有难题就需要有解决办法,怎么办,怎么办?
有办法。就是Excel中没有的功能,我们自已添加,也就是我们自已编写可以完成指定功能的宏。就象Excel内置功能一样,可以供我们随时使用。
三、怎么编写宏
有一种语言,它的名称叫VBA(visual baisic for application),它是Excel所支持的开发语言,也就是说,我们可以用VBA语言来编写我们需要的功能(宏),除此之外,我们还可以用VBA来编写Excel函数。
四、在哪编写宏
有一个窗口,都叫它VBE编辑器。你可以在工作表标签上右键菜单中点击”查看代码“,就可以打开它。更多的是我们通过”开发工具“选项卡打开这个界面。
需要什么功能,就可以编写什么功能,需要什么函数,就可以编写什么函数,工作中再也没有我们完不成的任务。
兰色说:还有什么理由可以让我们不向往强大的宏编程(VBA语言),这也可以解释,为什么很多函数高手放弃让人炫晕的Excel数组公式学习,技巧高手放弃繁杂的内置功能研究了。
附:兰色最近写的几段常用VBA代码
1、禁止插入工作表
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox '本工作簿禁止插入新工作表'
Application.DisplayAlerts = False
Sh.Delete
Application.DisplayAlerts = True
End Sub
2、禁止打开Excel文件
Private Sub Workbook_BeforePrint(Cancel As Boolean)
MsgBox '此excel文件禁止打印,如需打印请与管理员联系'
Cancel = True
End Sub
3、在VBA中调用Vlookup和Sumif函数
Sub 调用1()
Dim arr, arr1
arr = Range('a2:d6')
arr1 = Application.VLookup(Array('B', 'C'), arr, 4, 0)
End Sub
Sub 调用2()
Dim T
T = Timer
Dim arr
arr = Application.SumIf(Range('a2:a10000'), Array('B', 'C', 'G', 'R'), Range('B2:B10000'))
MsgBox Timer - T
Stop
End Sub
4、批量取消工作表隐藏
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
5、拆分表格成单独的Excel文件
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
6、合并多个Excel文件到一个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 Su
联系客服