VBA EXCEL 工作表變化 馬上執行 的作法 Worksheet_Change
沒想到還會用到 Excel 中的 VBA,當初寫VBA就是一段窮極無聊的日子,用Excel寫星象表…
現在居然要幫一位老大哥寫這樣的程式…當真所有的事,當下是很難知道它發生的意義是什麼…
癈話不多說
先開啟EXCEL,存成副檔名為xlsm,這樣可以使用巨集功能。
我們在Worksheet_Change中增加三行程式,會在A1, A2, A3格中填入a, b, c。各位是否有推論,這樣的寫法,會產生無窮迴圈?這個很重要!在寫Worksheet_Change程式時,要很小心,如果是 工作表1自己的Worksheet_Change要對工作表1自己做改變,就會進入無窮迴圈。
我們加入 Application.EnableEvents ,再試試看。
如此這般。
現在居然要幫一位老大哥寫這樣的程式…當真所有的事,當下是很難知道它發生的意義是什麼…
癈話不多說
先開啟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 ,再試試看。
如此這般。
留言
張貼留言