2018年3月9日 星期五

[VBA]Excel製作終極密碼遊戲活動-Use Excel to play Guess Number with VBA





終極密碼這個遊戲大家都不陌生,但是在大型活動上要與台下觀眾有即時性的互動,除了使用完整的應用程式或者是APP以外,可以參考使用Excel撰寫VBA程式碼來進行,以下程式碼提供給需要的人參考。因為使用巨集的檔案是有一定的風險存在,為了避免疑慮,所以並不附上原始檔案。

測試環境:系統Windows 10  
測試軟體:軟體Microsoft Excel 2013

需要的元件:
TextBox一個,Button兩個
UserForm一個
工作表2個

命名方式:
TextBox命名:TextBox1
Button命名:Button1,Clear
userform命名:bingo
sheet命名:都使用default的命名方式

運作方式:
Step1:在sheet2的A2輸入答案
Step2:在TextBox1輸入要猜的密碼
Step3:數字範圍會判斷使用者猜的數字變動範圍
Step4:猜中數字會彈跳出視窗
Step5:按下「重新一局」自動跳回0-100


開始製作程式:

第一步:開啟「開發者模式」


















第二步:插入TextBox與Button
















第三步:修改Button名稱與TextBox名稱(非必要)

























第四步:
數字0輸入在E3,數字100輸入在G3,
答案輸入在Sheet2的A2中




























第五步:

連點兩下「猜」的這個按鈕,然後輸入以下程式碼。
這裡請注意!若是你的Button、TextBox與Sheet命名與我不同,程式就不會正常執行。

Private Sub Button1_Click()

Dim answer As Integer
Dim low As Integer
low = ThisWorkbook.Sheets(1).Range("E3").Value
Dim up As Integer
up = ThisWorkbook.Sheets(1).Range("G3").Value
Dim in_number As Integer
answer = ThisWorkbook.Sheets(2).Range("A2").Value
in_number = TextBox1.Text

       If in_number = answer Then
           Bingo.Show
           Exit Sub
       End If

      If in_number > low Then
        If in_number < up Then
         If in_number > answer Then
          ThisWorkbook.Sheets(1).Range("G3").Value = in_number
         ElseIf in_number < answer Then
          ThisWorkbook.Sheets(1).Range("E3").Value = in_number
         End If
         Else
          MsgBox ("輸入的數字不在範圍中!")
         End If
       
      End If
      If in_number < low Then
       MsgBox ("輸入的數字不在範圍中!")
      End If
     
     
       
      'MsgBox (ThisWorkbook.Sheets(1).Range("E3").Value & "-" & ThisWorkbook.Sheets(1).Range("G3").Value & "之間")

End Sub

Private Sub clear_Click()
ThisWorkbook.Sheets(1).Range("E3").Value = 0
Dim up As Integer
ThisWorkbook.Sheets(1).Range("G3").Value = 100
End Sub

第六步:
自行建立UserForm,來設計猜到數字後的訊息方框。
在空白處按下右鍵,選擇「插入」>「自訂表單」,可參考以下我的設計畫面。
在視窗空白處按下右鍵選擇「屬性」,就可以修改表單的名稱。















第七步:
隱藏格線與各種欄位,讓畫面更好看,調整完後的畫面就會像下面一樣。




補充說明:
目前程式碼只能讓猜中密碼後的視窗顯示在主要螢幕,若是有延伸螢幕的配置,你會發現猜中密碼以後的提醒不會再另一個視窗,所以建議使用「同步螢幕」的方式來呈現此程式。




沒有留言:

張貼留言