蘭色曾對很多Excel技巧和函數(shù)高手說,千萬別學(xué)宏。因?yàn)橐坏凵虾昃幊?,Excel圈里很快就會(huì)少了一個(gè)技巧或函數(shù)高手!Why? 耐心看下去你就會(huì)明白。
一、什么是宏?
先舉個(gè)例子:
選取B列并復(fù)制
選取C列右鍵 - 選擇性粘貼 - 加
完成!
如上,你在Excel中進(jìn)行的一系列的操作過程,就是一個(gè)宏。操作過程(宏)可以是一步也可以是若干步,使用一個(gè)Excel命令或多個(gè)Excel命令。
宏,我們也可以看成是一個(gè)個(gè)可以完成特定目標(biāo)的功能
二、為什么學(xué)習(xí)宏?
Excel提供了很多功能,可以完成各種操作。篩選數(shù)據(jù)有自動(dòng)篩選和高級篩選,匯總數(shù)據(jù)有分類匯總、數(shù)據(jù)透視表等.......
批量取消工作表隱藏
批量合作多個(gè)工作表或Excel文件
批量......
有難題就需要有解決辦法,怎么辦,怎么辦?
有辦法。就是Excel中沒有的功能,我們自已添加,也就是我們自已編寫可以完成指定功能的宏。就象Excel內(nèi)置功能一樣,可以供我們隨時(shí)使用。
三、怎么編寫宏
有一種語言,它的名稱叫VBA(visual baisic for application),它是Excel所支持的開發(fā)語言,也就是說,我們可以用VBA語言來編寫我們需要的功能(宏),除此之外,我們還可以用VBA來編寫Excel函數(shù)。
四、在哪編寫宏
有一個(gè)窗口,都叫它VBE編輯器。你可以在工作表標(biāo)簽上右鍵菜單中點(diǎn)擊”查看代碼“,就可以打開它。更多的是我們通過”開發(fā)工具“選項(xiàng)卡打開這個(gè)界面。
需要什么功能,就可以編寫什么功能,需要什么函數(shù),就可以編寫什么函數(shù),工作中再也沒有我們完不成的任務(wù)。
還有什么理由可以讓我們不向往強(qiáng)大的宏編程(VBA語言),這也可以解釋,為什么很多函數(shù)高手放棄讓人炫暈的Excel數(shù)組公式學(xué)習(xí),技巧高手放棄繁雜的內(nèi)置功能研究了。
附:蘭色最近寫的幾段常用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文件禁止打印,如需打印請與管理員聯(lián)系'
Cancel = True
End Sub
3、在VBA中調(diào)用Vlookup和Sumif函數(shù)
Sub 調(diào)用1()
Dim arr, arr1
arr = Range('a2:d6')
arr1 = Application.VLookup(Array('B', 'C'), arr, 4, 0)
End Sub
Sub 調(diào)用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、拆分表格成單獨(dú)的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、合并多個(gè)Excel文件到一個(gè)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