EXCEL VBA從頭來過-基本語法(上篇) - 張凱喬

文章推薦指數: 80 %
投票人數:10人

VBA(全名為Visual Basic for Applications) 是一種Windows 下的巨集程式語言其語法承襲傳統的Visual Basic 在微軟Office 之中的各種 ... GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWriteEXCELVBA從頭來過-基本語法(上篇)前言之前工作需要寫過一些VBA但因為腦子很小,後來要再寫的時候就忘光藉機重新整理一下,分享給有需要的人VBA(全名為VisualBasicforApplications)是一種Windows下的巨集程式語言其語法承襲傳統的VisualBasic在微軟Office之中的各種軟體(如Word、Excel等)都可以直接使用,不需要另外安裝首先,VBA雖然都附隨在Office裡但是必須先到設定內把它開啟這樣子才會出現在介面上參考下列網址ExcelVBA程式設計教學:HelloWorld!-G.T.Wang這裡介紹如何啟用Excel的開發人員工具,撰寫一個HelloWorldVBA程式。

在任何一個版本的Excel中,我們都可以透過開發人員工具來撰寫VBA巨集程式,只不過在Excel中,開發人員工具預設是不會顯示的…blog.gtwang.org(一)、認識專案與模組在進入VBA介面的時候,會有幾個欄位基本上先認識圖中綠色跟藍色的框框就夠了綠色框框就是VBA專案的架構包含你現在的Excel物件(例如工作表)以及模組,也就是VBA程式的內容這邊先新增一個Module,就可以開始寫程式了右邊藍色那個框框,就是你寫程式碼的地方通常一個程式會以Sub"程式名"()開始再以EndSub結尾對於新手而言,或是以上班族需求而言盡可能的將一個任務(操作資料的過程)寫在一個Sub裡因為一個Sub就是一個巨集例如下圖,我在同一個Module裡寫了兩個Sub分別為test與test2,接著我在EXCEL選取巨集時他會給我兩個巨集的選擇,就是test與test2一個任務建一個巨集,使用上比較方便那除了Sub之外,還可以寫甚麼?Sub一般稱為副程式;除此之外還有Function(函數)、Property(屬性)舉例而言,如果你今天建了好幾個巨集那這些巨集又常幹一些很像的動作你就可以把這些動作寫成Function當你有需要時候,在Sub裡呼叫Function幫你完成部分內容可以節省每次寫這些重複程式碼的時間精神參考下列連結,有整理Sub與Function的不同與範例http://edisonx.pixnet.net/blog/post/42109770-vba-procedure-%E7%B0%A1%E8%BF%B0(二)、常用EXCEL儲存格表示法接下來,先認識四種選取EXCEL欄位的方式分別就是一格、一欄、一列與一區一格就是Cells(列,欄)例如Cells(1,2)就是對應到"B1"如果不熟悉列欄的表示方式就寫Cells(1,”B”)或Cells(“1”,”B”)都可以沒錯,沒有Cells("B1")這種簡單的寫法畢竟Cells的主要用途不是這個(下一段說明)一列就是Rows(列)例如Rows(1)就是第一列,等同於Rows(“1”)也可以使用Rows(“1:3”)代表第一到第三列一欄就是Columns(欄),"欄"或稱為"行"Columns(4)就是第四欄,等同於Columns(“D”)但Columns如果要選取多欄在雙引號裡面要用英文字而不是數字譬如Columns(“C:D”)代表C欄到D欄一區的表示方式是Range切記Range是VBA裡面最好用的選取方式支援單格、多格、單欄、多欄、單列及多列單格:Range(“B1”)多格:Range(“A1,B2,C3,D4”)單欄:Range(“A:A”)多欄:Range("B:B,E:E")列的表示方式就是把英文字改成數字另外如果Range("A1","B2")是表示一區喔(一次選四格的意思)等同於Range(Cells(“A1”),Cells(“B2”))參考ExcelVBA程式設計教學:活頁簿、工作表與儲存格-G.T.Wang這裡介紹如何使用ExcelVBA來控制活頁簿、工作表與儲存格的資料,用程式自動產生表格。

在開始之前,請先設定好ExcelVBA的開發環境,啟用開發人員工具,並且開啟ExcelVBA的程式編輯視窗。

首先我們介紹如何…blog.gtwang.org一開始可能會想說既然Range可以選取多格多欄多列這樣Cells、Rows跟Columns有何意義Cells、Rows跟Columns的優點是可以餵變數進去(這對於寫迴圈很重要)'例如Fori=1to5cells(i,2)=i*2Next從B1~B2的值分別為2、4、6、8、10(三)、常用EXCEL儲存格操作當你知道如何表示儲存格之後下一步便是操作最基本的便是直接給予值譬如Range(“A1”,”B2”)=100這樣A1、B1、A2、B2的值就變成100但是給予值這個動作算特例因為一般來說我們會給他動作譬如說給予值的動作可以寫成.value這樣我們上述的程式碼就會變成Range("A1","B2").value=100以下先整理幾個比較常用的基本設定可以直接貼進VBA試試('是VBA的註解方式)'粗體字Range("A1").Font.Bold=true'設定字體大小Range("B1").Font.Size=20'設定欄位顏色(顏色使用RGB表示)Range("C1").Interior.Color=RGB(0,255,0)'設定字體顏色Range("D1").Font.Color=RGB(255,0,0)'外框設定成雙框線Range("E1").Borders.LineStyle=xlDouble'改變欄位寬度Range("F1").ColumnWidth=30'自動調整欄寬(需整欄選取如果沒有資料則看不出變化)Range("G1").EntireColumn.AutoFit'清除資料內容Range("H1").ClearContents'清除資料格式Range("I1").ClearFormats此外也可以讀取一些值'A1的值等於B1的欄位=>A1=2Range("A1")=Range("B1").Column'C1的值等於第一個工作表的名字=>C1=工作表1Range("C1")=Worksheets(1).Name'D1的值等於E1~E5的格數=>D1=5Range("D1")=Range("E1","E5").Count(四)、WorkBooks與WorkSheets上面兩段提到內容都是在同一個工作表的動作但是我們使用EXCEL常常會跨工作表甚至不同活頁簿所以這邊提一下WorkBooks與WorkSheets的概念WorkBooks就是活頁簿的意思比較常用到的大概就是WorkBooks.Add‘開啟一個新的活頁簿WorkBooks.close‘將所有活頁簿關閉這邊要小心有沒有s因為WorkBooks是WorkBook的集合WorkBook是指一本活頁簿譬如WorkBook(1).Save'開啟的第一本活頁簿儲存WorkBook(2).Activate‘將開啟的第二本活頁簿拉到當前視窗一般比較常用的可能是ActiveWorkbook因為它就是指"當前視窗這本活頁簿"簡單來說,WorkBooks是針對整個EXCEL、多份活頁簿來操作WorkBook則是針對單一活頁簿使用,其功能比較多一些參考WorkbookObject(Excel)Editdescriptionmsdn.microsoft.com再來就是WorkSheets,指的是工作表這個在操作資料的時候比較常用工作表可以用順序、也可以用名字WorkSheets(1)或WorkSheets(“工作表1”)'譬如工作表1的"B2"值等於456WorkSheets(1).Range("B2")=456'工作表2的"C3"值等於789WorkSheets(2).Range("C3")=789也很常使用WorkSheets(1).Activate意思就是點開第一個工作表的意思再來就是ActiveWorkSheet因為指的是”當前視窗這本活頁簿”(五)、Select、Copy&Paste最後介紹一下最重要的Select、Copy&PasteRange(“A1”).Select就很像是滑鼠在A1上點一下的動作通常.Select之後會搭配Selection'先點選A1然後點選起來複製=>完成複製A1的內容Range("A1").SelectSelection.Copy複製之後就要貼上,但貼上比較麻煩貼上有兩種一種是Paste、PasteSpecial如果要比較直觀地重覆與Copy相同的動作就要使用PasteSpecial'先點選A1然後點選起來複製=>完成複製A1的內容Range("A1").SelectSelection.Copy'先點選B1~B4,點選起來後貼上=>完成內容貼到B1~B4Range("B1","B4").SelectSelection.PasteSpecial.PasteSpecial後面還能附加動作譬如(記得空白隔開).PasteSpecialxlPasteFormats'只會複製格式.PasteSpecialxlPasteValues'只會複製值參考XlPasteTypeEnumeration(Excel)XlPasteTypeEnumeration(Excel)XlPasteTypeEnumeration(Excel)msdn.microsoft.com至於Paste,比較麻煩他前面要接WorkSheets物件舉例'先點選A1然後點選起來複製=>完成複製A1的內容Range("A1").SelectSelection.Copy'先點選B1~B4,點選起來後貼上=>完成內容貼到B1~B4Range("B1","B4").SelectActiveSheet.Paste'在當前的工作表上貼上最後補充EXCEL的方法有千千萬萬種除了GOOGLE是你的好朋友之外也請善用"錄製巨集"這個功能簡單來說錄製巨集就是把你手動操作的動作轉錄成程式碼(網路上教學萬萬種可以看看)可以從轉錄之後的程式碼看一下執行的邏輯,再轉成你自己需要的方式OK這篇先降下一篇再講變數與控制邏輯--7Morefrom張凱喬Follow數位轉型Lovepodcastsoraudiobooks?Learnonthegowithournewapp.TryKnowableAboutHelpTermsPrivacyGettheMediumappGetstarted張凱喬1.6KFollowers數位轉型FollowMorefromMediumMatthewBergerSimplifyingPayrollwithPythonDevelopersGroupinPythonProjectsHowtoPrintAlphabetIinPython?MarinaYutingS30.MaximumParsimonyandminimummutationmethodsChamiHerathUsingPowerQuerytoconvertRepeatingRowstoColumnsHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable



請為這篇文章評分?