蘭色曾對很多Excel技巧和函數(shù)高手說,千萬別學宏。因為一旦愛上宏編程,Excel圈里很快就會少了一個技巧或函數(shù)高手!Why? 耐心看下去你就會明白。 一、什么是宏? 先舉個例子:
完成! 如上,你在Excel中進行的一系列的操作過程,就是一個宏。操作過程(宏)可以是一步也可以是若干步,使用一個Excel命令或多個Excel命令。 宏,我們也可以看成是一個個可以完成特定目標的功能 二、為什么學習宏? Excel提供了很多功能,可以完成各種操作。篩選數(shù)據(jù)有自動篩選和高級篩選,匯總數(shù)據(jù)有分類匯總、數(shù)據(jù)透視表等.......
有難題就需要有解決辦法,怎么辦,怎么辦? 有辦法。就是Excel中沒有的功能,我們自已添加,也就是我們自已編寫可以完成指定功能的宏。就象Excel內(nèi)置功能一樣,可以供我們隨時使用。 三、怎么編寫宏 有一種語言,它的名稱叫VBA(visual baisic for application),它是Excel所支持的開發(fā)語言,也就是說,我們可以用VBA語言來編寫我們需要的功能(宏),除此之外,我們還可以用VBA來編寫Excel函數(shù)。 四、在哪編寫宏 有一個窗口,都叫它VBE編輯器。你可以在工作表標簽上右鍵菜單中點擊”查看代碼“,就可以打開它。更多的是我們通過”開發(fā)工具“選項卡打開這個界面。 需要什么功能,就可以編寫什么功能,需要什么函數(shù),就可以編寫什么函數(shù),工作中再也沒有我們完不成的任務。 還有什么理由可以讓我們不向往強大的宏編程(VBA語言),這也可以解釋,為什么很多函數(shù)高手放棄讓人炫暈的Excel數(shù)組公式學習,技巧高手放棄繁雜的內(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、拆分表格成單獨的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 |
|
來自: 撥絲留其產(chǎn) > 《技巧》