IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

Microsoft Excel VBA抽獎程式

01. 疫情下公司Annual Dinner,已經延期再延期不知多少次了。但買好了的抽獎禮物,再不送出去就連保用期也過了。所以,抽獎就換成網上抽,再用Microsoft Teams作現場直播。

02. 網上很容易找到相關的尾牙抽獎程式,而且功能豐富齊備。但想到公司的要求,卻有很多不清楚及不確定因素,要更改現成的,似乎比新做一個更有難度。

03. 沿用20年前用過的Excel VBA,很快就完成基本的設計。

04. 再經三四次改良,就成了今次的版本。

  • Excel設計上,有3個工作表(Sheets)。一個為抽獎獎品及得獎人士;一個為抽獎人士;一個為抽獎人士備份。
  • 程式設計,會根據『抽獎獎品』工作表中,如果抽獎名稱設定為一樣時,便會當此為一次性抽獎數目。此為考慮到,沒有老闆希望對著電腦抽30次吧,但內容是一樣的禮物。
  • VBA執行後,會顯示一個開始畫面,可以放入抽獎的題材。
  • 原設計要求要加入聲效,但想到網上直播時必然出現延誤,所以最後取得此效果。
  • 進入抽獎程底後,當按下『抽獎』按鈕,程式就會在『抽獎人士』工作表中,隨機按獎品數目抽出得獎人士,之後將相關人士名稱刪除。並在顯示得獎人士後,將Excel檔案儲存,以防Excel突然關閉而令抽獎人士資料損失而做成不公平。

  • 『抽獎人士備份』工作表,是用於測試後,可以快捷將內容複製回到『抽獎人士』工作表,再將得獎人士從『抽獎獎品』工作表內刪除,便可以重置抽獎程式。
  • 要執行VBA程底,只要打開Excel並啟用巨集,再執行巨集預設的捷徑『Ctrl + Q』,便會看到描獎程式。
  1. 「nepgb」的個人頭像
    nepgb

    Hello,陳宣慈,要更改中獎人士姓名文字大小,你要先到『巨集』,『檢視巨集』,選『MACRO 1』,『編緝』。就會見到下面畫面。
    打開『表單』,『interface』,用MOUSE選姓名位置,會入到『BINGO』LABEL屬性,選『FONT』位置最右邊『…』,便會打開對話匣,更改文字樣式及大少,中獎人士姓名文字大細就會變動。
    reply

  2. 「陳宣慈」的個人頭像
    陳宣慈

    您好最後的大小中獎的字體姓名會變大請問這部分怎麼調整嗎

  3. 「nepgb」的個人頭像
    nepgb

    Hello,陳宣慈,你所指出情況,其實就是公司要求的情況。如果相同但多件的禮物,我們選擇是一次抽出中獎人員名單。而控制選項,是視乎Luck Draw工作表中,儲存格A1至A30內容如何設定。例如,儲存格A1至A3是相同名稱,那次中獎人員數目便會是3位。但如果我把儲存格A1至A6內容改成一樣名稱,那次中獎人員數目便會是6位。所以只需要更改A欄內容,便可以更改每次抽獎中獎人數,及總獎品數量,而不需要每次更改程式碼。

  4. 「陳宣慈」的個人頭像
    陳宣慈

    你們有一個獎品共有 6 個名額。
    理論上抽獎時應該要一次抽出:

    6 個人拿到同一個獎品(同一組名單)
    但你們遇到的情況是:

    前面第一次抽沒問題 → 一次抽出 3 個放在同一名單

    後面抽的時候,同一個獎品變成 1 個人出現 1 次、總共出現 6 次

    也就是「同一個獎品被拆成 6 個獨立結果」,而不是 1 個名單 3人

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *