Excel VBA 程式設計教學:活頁簿、工作表與儲存格

這裡介紹如何使用 Excel VBA 來控制活頁簿、工作表與儲存格的資料,用程式自動產生表格。

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

儲存格

首先我們介紹如何在 VBA 中控制 Excel 的儲存格。

Range 物件

在 VBA 中我們可以透過 Range 物件來選取並操作儲存格,這個物件是 Excel VBA 最重要的物件之一,使用頻率相當高,以下是各種使用方式。

若要將目前工作表的 A1 儲存格的內容設為 Hello,可以這樣寫:

Range("A1").Value = "Hello"

Range 物件的第一個參數放置儲存格的位置,這樣就可以將這個位置的儲存格抓出來,而 Value 屬性就是這個儲存格的內容,直接將 Value 指定成新的資料就可以更新 Excel 儲存格內容。

我們可以自己新增一個副程式(Sub),把這一行指令放在裡面來執行:

excel-vba-programming-workbook-worksheet-cell-1

VBA 副程式(Sub)

執行之後,A1 儲存格的內容就會變成 Hello

excel-vba-programming-workbook-worksheet-cell-2

執行結果

通常在開發 Excel VBA 程式的時候,都會同時開啟 Excel 與 VBA 的視窗,一邊開發程式一邊進行測試,而這樣的開發環境在每一台有安裝 Office 的電腦都有,不需要另外安裝,既方便又好用。

excel-vba-programming-workbook-worksheet-cell-3

Excel 與 VBA 視窗

如果要一次更改多個連續的儲存格內容,可以在 Range 的參數中指定儲存格的範圍,例如:

Range("A1:A4").Value = 5

這樣就會把 A1A4 儲存格的內容都更改為 5

excel-vba-programming-workbook-worksheet-cell-11

Excel 活頁簿

如果範圍不是連續的,也可以一次使用多個範圍來指定:

Range("A1:A2,B3:C4").Value = 10

這樣就可以更改任意範圍的儲存格內容:

excel-vba-programming-workbook-worksheet-cell-12

Excel 活頁簿

Range 也可以用來處理自訂名稱的儲存格,只要在 Range 的參數中指定儲存格的名稱即可,例如:

Range("MyCell").Value = 123

這樣 MyCell 這個儲存格的內容就會被指定為 123

excel-vba-programming-workbook-worksheet-cell-21

Excel 活頁簿

Windows, 程式設計

10 Comments

  1. CS

    想請教, 一個已經定義名稱的欄位, 要如何用巨集填入值? 謝謝

    • G. T. Wang

      使用 Range,例如 Range("MyCell").Value = 123

      這部分已經加入文章中。

  2. CS

    Thank you very much…

  3. JC

    想請問
    因公司需用VBA抓取測試出來的資料做成曲線圖,再相互比較
    做比對,但這個程式共用於許多測試出來的檔案,每個檔案的
    工作表以檔名做命名,讓這個VBA程式,可以適用於各個檔案 ;
    我試過很多工作表指定,但都無法抓到值,除非在VBA程式中直
    接輸入檔名,就可以畫出曲線…是否可幫忙指教一下,要如何
    修正呢?

    • G. T. Wang

      沒有看到實際的程式與資料,我也不知道該如何處理。

  4. Alex

    請問大大:
    我有兩欄資訊(A欄與C欄),只知道A欄的資訊列數少與C欄,利用Sheets(1).UsedRange.Columns.Count可知C欄最大列數,我要怎麼知道A欄的最大列數呢!?
    ex
    A C
    ────────
    1 2
    2 3
    4
    C欄最大列數為3,A欄要如何取的最大列數(2)!?

  5. Alex

    系統自動把空白吃掉了!!!
    那改問這個吧
    “C欄的資訊列數少與A欄”要怎麼知道A欄的最大列數呢!?(反正都是一樣的)
    ex
    A C
    ────────
    1 2
    2 3
    4
    A欄最大列數為3,C欄要如何取的最大列數(2)!?

  6. IRONER

    我完全不會這些程式的東西。但看你寫的文章很容易明白。
    感謝您。

  7. Mw

    您好 想請問一下 如果我要做一按下按鈕 儲存格計算a1+b1 並 顯示在 c1
    我該如何做呢 感謝 !

  8. Jimchang

    Excel VAL程式設計教學寫得不錯 我想應用在股票每天5日平均值減60日平均值每天的值計算 就不用很辛苦計算
    請教每天5日平均值 60日平均值 如何由看盤中取得?
    感恩喔!

Leave a Reply