關於部落格
新版介面測試中
  • 661731

    累積人氣

  • 13

    今日人氣

    1

    追蹤人氣

熱門標籤
夏日冰紛祭
這夏玩哪裡
夏午茶時光
天空部落
露營
台北美食
溫泉
輕旅行
六合夜市
彰化
高雄
士林夜市
日本
火鍋
宜蘭
台中
台南
苗栗

Excel錄製巨集程式(淺談)

前在上統計學的時候,凡是交作業,都得用到Excel,那時候大學時候,Microsoft Office系列軟體,除了Word之外,就是Excel了,不過那時候的Excel都是用來畫統計圖表,從來沒想到它可以用來自動運算,寫巨集程式。最近在網路上看了一些教學文章,也想來牛刀小試一下,不過對於VBA程式還不是很熟悉,只會用錄製的,其程式碼會自動產生,之後再去VBA維護及修改即可。
  假設,有一筆學生資料,它包含了43名學生之學號、學生成績等,因為學生資料是按照學號、名字的開頭作排序,名字以A-Z開頭作排序準則,A排在最前面,Z排在最後面,若A開頭之學生超過一名,則以第二個字母以後類推排序,最後輸入學生之成績、總成績及排序,不及格的成績以紅色標示。

  如果想要以平均成績由高到低作排序,可以用巨集的方式來作運算,但是不用寫程式,當然,如果使用下拉式選單,還是要靠程式寫作(這個自己也還沒有接觸到),下圖,以錄製新巨集的方式來作運算。首先,選擇「工具」/「巨集」/「錄製新巨集」。

  這時會出現錄製巨集的對話視窗,裡面可以讓使用者輸入快捷鍵,可以不用設定直接選擇確定即可,當然,如果往後要設定多個巨集,這些快捷鍵是不能通用的(一個巨集只能有一個快捷鍵),底下描述攔位的文字,在VBA中會變成註解。

  因為想要將平均成績由高到低排序,先將所有的表格以「Ctrl+a」的方式全選,然後選擇「資料」/「排序」。

  這時候就會出現一個對話窗格,讓使用者選擇要排序的資料選項,在名次排序上,都是以Average總平均為準,而要排序最高成績,以遞減的方式排序。

  接下來,按下停止錄製巨集,這時候,應該可以看出,Excel表格已經按照之前設定的巨集,作了排序,檢視一下,也發現它已經正確地將成績從高到低排序了。

  雖然使用快捷鍵來做排序,是很方便,但是,如果有一個按鈕在旁邊,將來要查閱資料,就點一下,讓資料依平均成績排列,那就更方便了。將「檢視」/「工具列」/「表單」勾起,就會在畫面中出現一個表單工具列。

   選擇按鈕,然後會出現一個「+」字樣的游標,用滑鼠左鍵拖出一個範圍,這個範圍就是按鈕的大小,大小可以自行拖曳。

  指定巨集,選擇剛才已經製作完成的巨集,然後按下確定,就可設定完成了,之後再將按鈕修改成想要顯示的按鈕名稱即可。


  接下來點選一下按鈕,來檢視一下執行結果,結果出現了一個發生錯誤的對話視窗,其實寫程式,最麻煩的就是除錯了。

  裡面有「結束(E)」、「偵錯(D)」及「說明(H)」,E代表End、D代表Debug及H代表Hint。按一下偵錯,檢視VBA程式碼,看哪裡出錯了。下面就是VBA巨集程式,箭頭所指的部分,表示程式執行中斷處,正常是要執行到End Sub才算程式結束,中斷表示程式出錯了。

  Excel再做排序時,欄位內要有資料,之所以會發生錯誤,是因為在排序時,選到了裡面沒有資料的欄位,如下圖所示。

  遇到這種方式,先在Average上面點選一下,然後錄製新巨集,方式和之前的方式是一樣的,這裡就不再描述,其操作步驟為「工具」/「巨集」/「錄製新巨集」。然後選擇要排序的一個欄位,以本表格來舉例,Average的數值是從J2至J44,所以點選J2,然後停止錄製巨集,再選擇「工具」/「巨集」/「Visual Basic編輯器」,就會出現Visual Basic編輯器畫面,左邊有程式的選擇窗口,點選最新產生的巨集(這裡是Macro2)。

  在新巨集中,可以看到新的程式碼「Range("J2").Select」,把這一行程式選起,然後複製,貼到Macro1的程式碼中,如下圖所示,這樣就不會有錯誤的情形發生。


  之後用同樣的方法,再製作一個巨集,就可以按照學號排序,作出另個運用,甚至還可以製作下拉式選單(嘗試中)。

  因為巨集可能會變成病毒,在預設情形下是不能執行巨集程式的,若真要寫作巨集程式並執行,於「工具」/「巨集」/「安全性」中,將安全性勾選中或低安全性,否則程式將無法執行。

相簿設定
標籤設定
相簿狀態