VBA EXCEL 工作表變化 馬上執行 的作法 Worksheet_Change

沒想到還會用到 Excel 中的 VBA,當初寫VBA就是一段窮極無聊的日子,用Excel寫星象表…
現在居然要幫一位老大哥寫這樣的程式…當真所有的事,當下是很難知道它發生的意義是什麼…

癈話不多說

先開啟EXCEL,存成副檔名為xlsm,這樣可以使用巨集功能。

然後看一上面,標籤列,有無開發人員選項。


如果沒有,從
檔案->選項->自定功能區->開發人員(打勾)


如果有,點擊 visual basic,就可以開始寫VBA




我們的目的是這樣的,如果 worksheet中有任何的更動,都會執行一段程式。

所以我們先點擊左邊的工作表1,然後右邊的程式編輯欄中上面的選擇列中,選worksheet。要記得這個設定是對應到個別的worksheet,所以如果有其它工作表,要個別寫對應的程式。如下



接下來選右邊的change



選完就會自動產生兩個程式名。 Worksheet_Change與 Worksheet_SelectionChange,如下。Worksheet_Change是指任何在worksheet 上的變動,就會執行這個程式。Worksheet_SelectionChange是指,選定EXCEL中的格有變化,如本來選A1改點擊了B1,這個動作就會觸發Worksheet_SelectionChange。

我們在兩個程式中寫一個MsgBox, 如下
各位可以試試效果如何。只要點擊左上方,excel的小圖,就會回到excel的worksheet中。



我們在Worksheet_Change中增加三行程式,會在A1, A2, A3格中填入a, b, c。各位是否有推論,這樣的寫法,會產生無窮迴圈?這個很重要!在寫Worksheet_Change程式時,要很小心,如果是 工作表1自己的Worksheet_Change要對工作表1自己做改變,就會進入無窮迴圈。
所以我們要能自由的開關觸發功能。用  Application.EnableEvents 

我們加入  Application.EnableEvents ,再試試看。

 如此這般。

留言

這個網誌中的熱門文章

python 找圖自動點擊

Python pyserial 抓取系統內的 COM PORT