Tặng các bạn file "QUAY SỐ TRÚNG THƯỞNG" nhân dịp SN GiaiphapExcel.Com lần 5

Liên hệ QC

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,613
Được thích
16,671
Giới tính
Nam
Ngày 2/7/2011 vừa qua thật vui nhộn, hạnh phúc, đoàn kết, thân mật. Một trong những niềm vui đó là phần quay số trúng thưởng, những phần quà nhỏ có, to có, dài có, ngắn có, nặng có, nhẹ có... được các bạn lần lượt chọn lựa sau khi trúng thưởng, và thật ngạc nhiên đầy thú vị khi mở quà: bưởi, cam, mướp, ớt v.v... điều đó đã làm tạo niềm vui bất ngờ cho các thành viên.

Qua đó, tôi thấy một số thành viên rất thích chương trình này, vì vậy, hôm nay tôi tặng các bạn file "QUAY SỐ TRÚNG THƯỞNG", tuy không phải là phần mềm gì, nhưng cũng tạo được niềm vui cho các bạn. Nhiều người vẫn nghĩ rằng Excel chỉ là những bảng tính với những hàm, công thức khô khan, thì hôm nay có thể các bạn sẽ nghĩ khác về nó!

Chương trình này được thiết kế và phát triển dựa trên File "Rút thăm trúng thưởng" của Thầy AnhTuan1066. Tôi xin cảm ơn Thầy đã sáng tác chương trình này. (Nguồn: http://www.giaiphapexcel.com/forum/showthread.php?24123-Tạo-hiệu-ứng-cho-UserForm&p=167689#post167689)

Một số hình ảnh giao diện:

attachment.php




attachment.php


Các câu lệnh chính trong VBA:

PHP:
Private Sub NhapPhieu_1_Click()
  Set DicItem1 = CreateObject("Scripting.Dictionary")
  DictCount = 0: k = 0
  LbTieuDe.Visible = False
  LbNTT.Visible = False
  SoPhieu_1.Visible = False
  LbNMM.Caption = LbNMM.Caption & " / " & SoPhieu_1
  LbHD.Visible = False
  NhapPhieu_1.Visible = False
  LbNMM.Visible = True
  STT_1.Visible = True
  With Start_1
    .Caption = QS.Caption: .BackColor = 49152
    .Enabled = True: .Visible = True: .SetFocus
  End With
  CmdReSet_1.Visible = True
  Call PlayMusic
  MS = 2
End Sub

PHP:
Private Sub Start_1_Click()
  With Start_1
    Call StopYeah
    CC = .Caption
    CmdReSet_1.Visible = False
    If CC = BD.Caption Or CC = QS.Caption Then
      .Caption = DL.Caption: .BackColor = 255
      If k = 0 Then DictCount = Val(SoPhieu_1)
      If DictCount = 0 Then UniMsgBox MsgEnd.Caption, vbCritical, "Thông báo": _
      CmdReSet_1.Visible = True: .Enabled = False: Call StopMusic: Exit Sub
      Call PlayMusic
      Solan = Val(Solan) + 1
      LbNMM.Caption = NMM.Caption & WorksheetFunction.Max(Solan, 1) & " / " & SoPhieu_1
      If DicItem1.Count = 0 Then
        For i = 1 To DictCount
          DicItem1.Add i, i
        Next
      End If
      Do
        Randomize
        iRnd = Int((DicItem1.Count) * Rnd()) + 1
        Nguon = DicItem1.Item(iRnd)
        Sleep 1
        DoEvents
        CC = Start_1.Caption
        If CC = QS.Caption Or GameOver = True Then GoTo Ends
      Loop
Ends:
      If GameOver = True Then Exit Sub
      With ListBox1
        .AddItem .ListCount + 1
        .List(.ListCount - 1, 1) = DicItem1.Item(iRnd)
        .ListIndex = .ListCount - 1
        .Visible = True
      End With
      k = k + 1: DictCount = DictCount - 1
      DicItem1.Remove iRnd
      Call CapNhatDict
      Call PlayYeah
    ElseIf CC = DL.Caption Then
      Call PlayMusic
      .Caption = QS.Caption: .BackColor = 49152
      MS = Val(MS) + 1: MS = IIf(MS > 9, 2, MS)
      CmdReSet_1.Visible = True
      LbNMM.ForeColor = 255
    End If
  End With
End Sub

PHP:
Private Sub CapNhatDict()
  DicItem2 = Join(DicItem1.Items, " "): DicItem2 = Split(DicItem2, " ")
  Set DicItem1 = CreateObject("Scripting.Dictionary")
  For i = 0 To UBound(DicItem2)
    DicItem1.Add i + 1, DicItem2(i)
  Next
End Sub

HƯỚNG DẪN SỬ DỤNG:

Đây là File Excel có sử dụng Macro vì vậy, khi tải file về, tại mục Macro Security... các bạn nhớ phải cài ở chế độ LOW (hoặc MEDIUM) trước khi sử dụng nhé!

File này có sử dụng các bài nhạc, vì vậy, nếu các bạn nào muốn "ồn ào" một tí thì tải luôn cái file "Media" tại đường dẫn dưới đây về, sau đó các bạn giải nén và để thư mục Media này chung với thư mục chứa file "Quay_So_GPE" này nhé!
Link tải thư mục Media: http://www.4shared.com/file/e8eOz7BS/Media.html

attachment.php


Nếu không tải Thư mục Media về cũng không có sao, chương trình vẫn chạy mà không có phát nhạc thôi các bạn.

Các bạn nhập số (chương trình cho phép nhập tối đa 999 số, các bạn có thể tùy chỉnh trong code) và QUAY SỐ thôi. Click vào nút DỪNG LẠI để chọn số may mắn. Các bạn có thể thao tác toàn bộ bằng phím ENTER hoặc phím SPACEBAR để quay số và chọn số.

Khi số được chọn sẽ hiển thị trên LISTBOX, các bạn có thể xóa số đó nếu người may mắn không có mặt tại đó bằng cách double click vào ngay số đó.

Chúc các cảm nhận được sự thú vị vui vẻ với chương trình này!
 

File đính kèm

  • QuaySo1.jpg
    QuaySo1.jpg
    19 KB · Đọc: 2,001
  • QuaySo2.jpg
    QuaySo2.jpg
    18 KB · Đọc: 1,897
  • HD.jpg
    HD.jpg
    13 KB · Đọc: 1,909
  • Quay_So_GPE.rar
    100 KB · Đọc: 4,031
annh có thể cho em xin pass được không anh,

Thanks
 
Upvote 0
Chương trình mới lần này có bổ sung hàm MyUniMsgBox bằng tiếng Việt rất đẹp, các bạn có thể nghiên cứu và tùy biến cho các MsgBox của mình!

attachment.php


attachment.php



Mã:
Function MyUniMsgBox(MsgText As String, Optional MsgStyle As VbMsgBoxStyle, _
                                        Optional DefaultType_1_to_5 As Byte, _
                                        Optional MsgTitle As String) As VbMsgBoxResult
    Dim iVal As VbMsgBoxStyle
    Dim msgBoxIcon As MsoAlertIconType
    Dim msgButton As MsoAlertButtonType
    Dim DefaultType As MsoAlertDefaultType
    
    iVal = MsgStyle
    Select Case MsgStyle
    Case 16 To 21[COLOR=#006400] ' Critical case[/COLOR]
        iVal = iVal - 16
        msgBoxIcon = msoAlertIconCritical
    Case 32 To 37 [COLOR=#006400]' Question case[/COLOR]
        iVal = iVal - 32
        msgBoxIcon = msoAlertIconQuery
    Case 48 To 53[COLOR=#006400] ' Exclamation case[/COLOR]
        iVal = iVal - 48
        msgBoxIcon = msoAlertIconWarning
    Case 64 To 69 [COLOR=#006400]' Information case[/COLOR]
        iVal = iVal - 64
        msgBoxIcon = msoAlertIconInfo
    End Select
    
    Select Case iVal
        Case 0: msgButton = msoAlertButtonOK
        Case 1: msgButton = msoAlertButtonOKCancel
        Case 2: msgButton = msoAlertButtonAbortRetryIgnore
        Case 3: msgButton = msoAlertButtonYesNoCancel
        Case 4: msgButton = msoAlertButtonYesNo
        Case 5: msgButton = msoAlertButtonRetryCancel
    End Select
    
    Select Case DefaultType_1_to_5 [COLOR=#006400]'MsoAlertDefaultType[/COLOR]
        Case 2: DefaultType = msoAlertDefaultSecond
        Case 3: DefaultType = msoAlertDefaultThird
        Case 4: DefaultType = msoAlertDefaultFourth
        Case 5: DefaultType = msoAlertDefaultFifth
        Case Else: DefaultType = msoAlertDefaultFirst
    End Select
[COLOR=#006400]    ' Set Hook[/COLOR]
    hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, 0, GetCurrentThreadId)
[COLOR=#006400]    ' Display the messagebox[/COLOR]
    On Error GoTo OKOnly
    MyUniMsgBox = Application.Assistant.DoAlert(MsgTitle, MsgText, msgButton, msgBoxIcon, DefaultType, msoAlertCancelDefault, False)
    Exit Function
OKOnly:
    MyUniMsgBox = Application.Assistant.DoAlert(MsgTitle, MsgText, msgButton, msgBoxIcon, msoAlertDefaultFirst, msoAlertCancelDefault, False)
End Function


Hàm bổ trợ cho hàm trên:

Mã:
Private Function MsgBoxHookProc(ByVal lMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If lMsg = HCBT_ACTIVATE Then
        [COLOR=#006400]'De biet Charcode, dung ham ASCW("KyTu")[/COLOR]
        StrOK = ChrW$(272) & ChrW$(7891) & "&ng " & ChrW$(253)     [COLOR=#006400] 'Dong y[/COLOR]
        StrCancel = "&H" & ChrW$(7911) & "y"                        [COLOR=#006400]'Huy[/COLOR]
        StrAbort = "&L" & ChrW$(432) & "u l" & ChrW$(7841) & "i"   [COLOR=#006400] 'Luu lai[/COLOR]
        StrRetry = "&Xóa"                                           [COLOR=#006400]'Xoa[/COLOR]
        StrIgnore = "H" & ChrW$(7911) & "&y l" & ChrW$(432) & "u"  [COLOR=#006400] 'Huy luu[/COLOR]
        StrYes = "&Có"                                             [COLOR=#006400] 'Co[/COLOR]
        StrNo = "&Không"                                          [COLOR=#006400]  'Khong[/COLOR]
        
        SetDlgItemText wParam, IdOK, StrConv(StrOK, vbUnicode)
        SetDlgItemText wParam, IdCancel, StrConv(StrCancel, vbUnicode)
        SetDlgItemText wParam, IdAbort, StrConv(StrAbort, vbUnicode)
        SetDlgItemText wParam, IdRetry, StrConv(StrRetry, vbUnicode)
        SetDlgItemText wParam, IdIgnore, StrConv(StrIgnore, vbUnicode)
        SetDlgItemText wParam, IdYes, StrConv(StrYes, vbUnicode)
        SetDlgItemText wParam, IdNo, StrConv(StrNo, vbUnicode)
        
        [COLOR=#006400]' Release the Hook[/COLOR]
        UnhookWindowsHookEx hHook
    End If
    MsgBoxHookProc = False
End Function

Cấu trúc:

MyUniMsgBox Nội dung, Kiểu Icon + Các loại nút lệnh, Nút lệnh mặc định (từ 1 đến 5), Tiêu đề

attachment.php


Các bạn thấy viền xanh nhạt tại nút lệnh Hủy, đó chính là Nút lệnh mặc định, khi bấm Enter là nó thực hiện lệnh tại nút lệnh này. Vì đây là nút thứ 2 nên có cấu trúc:

Msg = MyUniMsgBox(MsgXoa.Caption & .List(, 2) & " ] hay không?", vbQuestion + vbRetryCancel, 2, "THÔNG BÁO")
 

File đính kèm

  • Picture3.jpg
    Picture3.jpg
    10.7 KB · Đọc: 376
  • Picture2.jpg
    Picture2.jpg
    7.2 KB · Đọc: 376
  • Picture1.jpg
    Picture1.jpg
    9.3 KB · Đọc: 393
Lần chỉnh sửa cuối:
Upvote 0
chương trình rất hay, nhưng mình nghĩ nên để chương trình tự động DỪNG QUAY SỐ như thế sẽ khách quan hơn.%#^#$ (ý kiến reeng của mình)
 
Lần chỉnh sửa cuối:
Upvote 0
chương trình rất hay, nhưng mình nghĩ nên để chương trình tự động DỪNG QUAY SỐ như thế sẽ khách quan hơn.%#^#$ (ý kiến reeng của mình)

Đã từng làm như vậy và người ta lại nói "để nó tự dừng thì không khách quan, giống như sắp sẳn thứ tự người dừng", rồi người ta lại nói nó "đang quay quay thì enter sẽ chọn được người bất kỳ nó sẽ hay hơn". Đằng nào cũng có lý, thôi thì tùy vào trường hợp của mỗi người mà dùng vào vậy.

Nhưng tôi vẫn thích chọn theo cách bấm cho nó dừng, bởi vì chơi một trò chơi, nhất là bốc thăm, rút thăm, quay số gì đó, ta mời một người đại diện lên quay số hay rút thăm sẽ thú vị hơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Bác Nghĩa ơi,
Mình không biết chỉnh sửa VBA gì hết. Down chương trình về xong, khi chạy nó cứ báo chương trình không chạy trên 64bit được. Mình đang chạy Windows 8 và Ofice 2013 đều 64bit hết. Mong bác Nghĩa giúp dùm. Cám ơn bác.
 
Upvote 0
Mình đang cần chương trình này, rất hữu ích.
Thanks!}}}}}
 
Upvote 0
Mình đang muốn bỏ cột nickname trong form đi nhưng không biết làm thế nào
 
Upvote 0
Bạn có thể cho mình xin code thay logo và cách thay logo trên file này không?
 
Upvote 0
Chương trình này của Anh hay quá. Em xin lưu file lại để cuối năm cho Cty quay Anh nhé.

Anh có thể chỉnh lại tạo thêm một phiên bản theo kiểu như sau được ko nhé? (Em có gửi hình minh họa, theo file đính kèm)
- Xác định số người tham dự tất niên cuối năm. Để nhập vào số người tham dự (ví dụ): 100 người
- Xác định số lượng giải thưởng (số lượng phiếu trúng thưởng của từng giải) ví dụ: giải đặt biệt (1 giải), giải nhất (3 giải), giải nhì (5 giải), giải ba (10 giải), giải khúc khích (15 giải).
- Khi quay: Nên quay giải khúc khích trước, rồi đến ba, đến hai, đến nhất, và cuối cùng là đặc biệt. Để tạo sự hồi hộp cho mọi người.
Cám ơn Anh!


Em gửi file nên nhưng thấy nó bị mờ và khó xem. Để xem hình ảnh được rõ. Anh có thể tải file theo đường link dưới đây


http://www.mediafire.com/view/fngukyb4cw5mb29/Capture1.PNG

http://www.mediafire.com/view/c4pmm9jre99e3ls/Untitled2.png
 

File đính kèm

  • Capture1 (Copy).jpg
    Capture1 (Copy).jpg
    14.8 KB · Đọc: 77
  • Untitled2 (Copy).jpg
    Untitled2 (Copy).jpg
    8.1 KB · Đọc: 82
Lần chỉnh sửa cuối:
Upvote 0
Add ơi sao mình mở nó báo lỗi như vậy là sửa ntn vậy add?
Untitled.jpg
cam ơn add!
 
Upvote 0
làm sao để bỏ chữ nick name trên hình ra vậy anh?
picture1-jpg.85271
 
Lần chỉnh sửa cuối:
Upvote 0
anh Nghĩa ơi, chương trình này hay quá, em đang chế lại cho phù hợp cơ quan em, nhưng có vài điểm em không biết cần anh và mọi người hỗ trợ em như sau:
1. Pass unprotect workbook em thấy vẫn còn, anh cho em xin pass được không?
2. Làm sao để nó hiện ra tất cả các sheet đề mình tùy biến và chỉnh sửa
3. Em muốn sau khi quay số xong (5-10 giải chẳng hạn), thì tùy vào Mã số nhân viên hay số thứ tự sẽ hiện lên hình ảnh lần lượt từng người .
Cám ơn mọi người, em up lại file của em đang làm cho mọi người hỗ trợ em nhé!
 

File đính kèm

  • Quayso.xls
    194 KB · Đọc: 107
Upvote 0
các bác ơi e mở trên 64 bit thì k mở đc, có bác nào có file này mà dùng win 64 bit cho e xin với ah. e cmar ơn
 
Upvote 0
Chương trình mới lần này có bổ sung hàm MyUniMsgBox bằng tiếng Việt rất đẹp, các bạn có thể nghiên cứu và tùy biến cho các MsgBox của mình!

attachment.php


attachment.php



Mã:
Function MyUniMsgBox(MsgText As String, Optional MsgStyle As VbMsgBoxStyle, _
                                        Optional DefaultType_1_to_5 As Byte, _
                                        Optional MsgTitle As String) As VbMsgBoxResult
    Dim iVal As VbMsgBoxStyle
    Dim msgBoxIcon As MsoAlertIconType
    Dim msgButton As MsoAlertButtonType
    Dim DefaultType As MsoAlertDefaultType
   
    iVal = MsgStyle
    Select Case MsgStyle
    Case 16 To 21[COLOR=#006400] ' Critical case[/COLOR]
        iVal = iVal - 16
        msgBoxIcon = msoAlertIconCritical
    Case 32 To 37 [COLOR=#006400]' Question case[/COLOR]
        iVal = iVal - 32
        msgBoxIcon = msoAlertIconQuery
    Case 48 To 53[COLOR=#006400] ' Exclamation case[/COLOR]
        iVal = iVal - 48
        msgBoxIcon = msoAlertIconWarning
    Case 64 To 69 [COLOR=#006400]' Information case[/COLOR]
        iVal = iVal - 64
        msgBoxIcon = msoAlertIconInfo
    End Select
   
    Select Case iVal
        Case 0: msgButton = msoAlertButtonOK
        Case 1: msgButton = msoAlertButtonOKCancel
        Case 2: msgButton = msoAlertButtonAbortRetryIgnore
        Case 3: msgButton = msoAlertButtonYesNoCancel
        Case 4: msgButton = msoAlertButtonYesNo
        Case 5: msgButton = msoAlertButtonRetryCancel
    End Select
   
    Select Case DefaultType_1_to_5 [COLOR=#006400]'MsoAlertDefaultType[/COLOR]
        Case 2: DefaultType = msoAlertDefaultSecond
        Case 3: DefaultType = msoAlertDefaultThird
        Case 4: DefaultType = msoAlertDefaultFourth
        Case 5: DefaultType = msoAlertDefaultFifth
        Case Else: DefaultType = msoAlertDefaultFirst
    End Select
[COLOR=#006400]    ' Set Hook[/COLOR]
    hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, 0, GetCurrentThreadId)
[COLOR=#006400]    ' Display the messagebox[/COLOR]
    On Error GoTo OKOnly
    MyUniMsgBox = Application.Assistant.DoAlert(MsgTitle, MsgText, msgButton, msgBoxIcon, DefaultType, msoAlertCancelDefault, False)
    Exit Function
OKOnly:
    MyUniMsgBox = Application.Assistant.DoAlert(MsgTitle, MsgText, msgButton, msgBoxIcon, msoAlertDefaultFirst, msoAlertCancelDefault, False)
End Function


Hàm bổ trợ cho hàm trên:

Mã:
Private Function MsgBoxHookProc(ByVal lMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If lMsg = HCBT_ACTIVATE Then
        [COLOR=#006400]'De biet Charcode, dung ham ASCW("KyTu")[/COLOR]
        StrOK = ChrW$(272) & ChrW$(7891) & "&ng " & ChrW$(253)     [COLOR=#006400] 'Dong y[/COLOR]
        StrCancel = "&H" & ChrW$(7911) & "y"                        [COLOR=#006400]'Huy[/COLOR]
        StrAbort = "&L" & ChrW$(432) & "u l" & ChrW$(7841) & "i"   [COLOR=#006400] 'Luu lai[/COLOR]
        StrRetry = "&Xóa"                                           [COLOR=#006400]'Xoa[/COLOR]
        StrIgnore = "H" & ChrW$(7911) & "&y l" & ChrW$(432) & "u"  [COLOR=#006400] 'Huy luu[/COLOR]
        StrYes = "&Có"                                             [COLOR=#006400] 'Co[/COLOR]
        StrNo = "&Không"                                          [COLOR=#006400]  'Khong[/COLOR]
       
        SetDlgItemText wParam, IdOK, StrConv(StrOK, vbUnicode)
        SetDlgItemText wParam, IdCancel, StrConv(StrCancel, vbUnicode)
        SetDlgItemText wParam, IdAbort, StrConv(StrAbort, vbUnicode)
        SetDlgItemText wParam, IdRetry, StrConv(StrRetry, vbUnicode)
        SetDlgItemText wParam, IdIgnore, StrConv(StrIgnore, vbUnicode)
        SetDlgItemText wParam, IdYes, StrConv(StrYes, vbUnicode)
        SetDlgItemText wParam, IdNo, StrConv(StrNo, vbUnicode)
       
        [COLOR=#006400]' Release the Hook[/COLOR]
        UnhookWindowsHookEx hHook
    End If
    MsgBoxHookProc = False
End Function

Cấu trúc:

MyUniMsgBox Nội dung, Kiểu Icon + Các loại nút lệnh, Nút lệnh mặc định (từ 1 đến 5), Tiêu đề

attachment.php


Các bạn thấy viền xanh nhạt tại nút lệnh Hủy, đó chính là Nút lệnh mặc định, khi bấm Enter là nó thực hiện lệnh tại nút lệnh này. Vì đây là nút thứ 2 nên có cấu trúc:

Msg = MyUniMsgBox(MsgXoa.Caption & .List(, 2) & " ] hay không?", vbQuestion + vbRetryCancel, 2, "THÔNG BÁO")


bác up file mới lên đi cho a e thưởng thức và học hỏi với ạ
 
Upvote 0
Ngày 2/7/2011 vừa qua thật vui nhộn, hạnh phúc, đoàn kết, thân mật. Một trong những niềm vui đó là phần quay số trúng thưởng, những phần quà nhỏ có, to có, dài có, ngắn có, nặng có, nhẹ có... được các bạn lần lượt chọn lựa sau khi trúng thưởng, và thật ngạc nhiên đầy thú vị khi mở quà: bưởi, cam, mướp, ớt v.v... điều đó đã làm tạo niềm vui bất ngờ cho các thành viên.

Qua đó, tôi thấy một số thành viên rất thích chương trình này, vì vậy, hôm nay tôi tặng các bạn file "QUAY SỐ TRÚNG THƯỞNG", tuy không phải là phần mềm gì, nhưng cũng tạo được niềm vui cho các bạn. Nhiều người vẫn nghĩ rằng Excel chỉ là những bảng tính với những hàm, công thức khô khan, thì hôm nay có thể các bạn sẽ nghĩ khác về nó!

Chương trình này được thiết kế và phát triển dựa trên File "Rút thăm trúng thưởng" của Thầy AnhTuan1066. Tôi xin cảm ơn Thầy đã sáng tác chương trình này. (Nguồn: http://www.giaiphapexcel.com/forum/...Tạo-hiệu-ứng-cho-UserForm&p=167689#post167689)

Một số hình ảnh giao diện:

attachment.php




attachment.php


Các câu lệnh chính trong VBA:

PHP:
Private Sub NhapPhieu_1_Click()
  Set DicItem1 = CreateObject("Scripting.Dictionary")
  DictCount = 0: k = 0
  LbTieuDe.Visible = False
  LbNTT.Visible = False
  SoPhieu_1.Visible = False
  LbNMM.Caption = LbNMM.Caption & " / " & SoPhieu_1
  LbHD.Visible = False
  NhapPhieu_1.Visible = False
  LbNMM.Visible = True
  STT_1.Visible = True
  With Start_1
    .Caption = QS.Caption: .BackColor = 49152
    .Enabled = True: .Visible = True: .SetFocus
  End With
  CmdReSet_1.Visible = True
  Call PlayMusic
  MS = 2
End Sub

PHP:
Private Sub Start_1_Click()
  With Start_1
    Call StopYeah
    CC = .Caption
    CmdReSet_1.Visible = False
    If CC = BD.Caption Or CC = QS.Caption Then
      .Caption = DL.Caption: .BackColor = 255
      If k = 0 Then DictCount = Val(SoPhieu_1)
      If DictCount = 0 Then UniMsgBox MsgEnd.Caption, vbCritical, "Thông báo": _
      CmdReSet_1.Visible = True: .Enabled = False: Call StopMusic: Exit Sub
      Call PlayMusic
      Solan = Val(Solan) + 1
      LbNMM.Caption = NMM.Caption & WorksheetFunction.Max(Solan, 1) & " / " & SoPhieu_1
      If DicItem1.Count = 0 Then
        For i = 1 To DictCount
          DicItem1.Add i, i
        Next
      End If
      Do
        Randomize
        iRnd = Int((DicItem1.Count) * Rnd()) + 1
        Nguon = DicItem1.Item(iRnd)
        Sleep 1
        DoEvents
        CC = Start_1.Caption
        If CC = QS.Caption Or GameOver = True Then GoTo Ends
      Loop
Ends:
      If GameOver = True Then Exit Sub
      With ListBox1
        .AddItem .ListCount + 1
        .List(.ListCount - 1, 1) = DicItem1.Item(iRnd)
        .ListIndex = .ListCount - 1
        .Visible = True
      End With
      k = k + 1: DictCount = DictCount - 1
      DicItem1.Remove iRnd
      Call CapNhatDict
      Call PlayYeah
    ElseIf CC = DL.Caption Then
      Call PlayMusic
      .Caption = QS.Caption: .BackColor = 49152
      MS = Val(MS) + 1: MS = IIf(MS > 9, 2, MS)
      CmdReSet_1.Visible = True
      LbNMM.ForeColor = 255
    End If
  End With
End Sub

PHP:
Private Sub CapNhatDict()
  DicItem2 = Join(DicItem1.Items, " "): DicItem2 = Split(DicItem2, " ")
  Set DicItem1 = CreateObject("Scripting.Dictionary")
  For i = 0 To UBound(DicItem2)
    DicItem1.Add i + 1, DicItem2(i)
  Next
End Sub

HƯỚNG DẪN SỬ DỤNG:

Đây là File Excel có sử dụng Macro vì vậy, khi tải file về, tại mục Macro Security... các bạn nhớ phải cài ở chế độ LOW (hoặc MEDIUM) trước khi sử dụng nhé!

File này có sử dụng các bài nhạc, vì vậy, nếu các bạn nào muốn "ồn ào" một tí thì tải luôn cái file "Media" tại đường dẫn dưới đây về, sau đó các bạn giải nén và để thư mục Media này chung với thư mục chứa file "Quay_So_GPE" này nhé!
Link tải thư mục Media: http://www.4shared.com/file/e8eOz7BS/Media.html

attachment.php


Nếu không tải Thư mục Media về cũng không có sao, chương trình vẫn chạy mà không có phát nhạc thôi các bạn.

Các bạn nhập số (chương trình cho phép nhập tối đa 999 số, các bạn có thể tùy chỉnh trong code) và QUAY SỐ thôi. Click vào nút DỪNG LẠI để chọn số may mắn. Các bạn có thể thao tác toàn bộ bằng phím ENTER hoặc phím SPACEBAR để quay số và chọn số.

Khi số được chọn sẽ hiển thị trên LISTBOX, các bạn có thể xóa số đó nếu người may mắn không có mặt tại đó bằng cách double click vào ngay số đó.

Chúc các cảm nhận được sự thú vị vui vẻ với chương trình này!
a ơi có bản cho win 64 bit k ạ? cho e xin file vào hieubv68@gmail.com
E cảm ơn a nhiều ah
 
Upvote 0
Chào GPE và các anh chị
Mình thấy quay số này rất hay và rất hay áp dụng
giờ mình muốn như thế này: các bạn giúp mình với

ngày 11/1 này mình có dùng chương trình quay số trúng thưởng với 130 giải thưởng và 130 số
nhưng muốn số lần quay ít hơn
quay giải khuyến khích có 35 giải quay 2 lần( lần 1 chọn ra 15 số ngẫu nhiên), quay lần 2 tự chọn ra 20 số ngẫu nhiên. số được chọn loại khỏi danh sách nhé.
quay giải tư: cũng tương tự 2 có 30 giải và gồm 2 lần quay: lần 1 tự động chọn 15 số lần 2 tự chọn 15 số
Giải ba cũng thế cho 10 giải, mỗi lẫn quay tự chọn 5 số
gải nhì 5 giải và 1 lần quay tự động chọn 5 giải luôn
giải nhất 1 giải
giải đb 1 giải cũng tự chọn

thanks

anh chị nào giúp sớm mình với
 
Upvote 0
bác up file mới lên đi cho a e thưởng thức và học hỏi với ạ
1
Bài đã được tự động gộp:

Chương trình mới lần này có bổ sung hàm MyUniMsgBox bằng tiếng Việt rất đẹp, các bạn có thể nghiên cứu và tùy biến cho các MsgBox của mình!

attachment.php


attachment.php



Mã:
Function MyUniMsgBox(MsgText As String, Optional MsgStyle As VbMsgBoxStyle, _
                                        Optional DefaultType_1_to_5 As Byte, _
                                        Optional MsgTitle As String) As VbMsgBoxResult
    Dim iVal As VbMsgBoxStyle
    Dim msgBoxIcon As MsoAlertIconType
    Dim msgButton As MsoAlertButtonType
    Dim DefaultType As MsoAlertDefaultType
   
    iVal = MsgStyle
    Select Case MsgStyle
    Case 16 To 21[COLOR=#006400] ' Critical case[/COLOR]
        iVal = iVal - 16
        msgBoxIcon = msoAlertIconCritical
    Case 32 To 37 [COLOR=#006400]' Question case[/COLOR]
        iVal = iVal - 32
        msgBoxIcon = msoAlertIconQuery
    Case 48 To 53[COLOR=#006400] ' Exclamation case[/COLOR]
        iVal = iVal - 48
        msgBoxIcon = msoAlertIconWarning
    Case 64 To 69 [COLOR=#006400]' Information case[/COLOR]
        iVal = iVal - 64
        msgBoxIcon = msoAlertIconInfo
    End Select
   
    Select Case iVal
        Case 0: msgButton = msoAlertButtonOK
        Case 1: msgButton = msoAlertButtonOKCancel
        Case 2: msgButton = msoAlertButtonAbortRetryIgnore
        Case 3: msgButton = msoAlertButtonYesNoCancel
        Case 4: msgButton = msoAlertButtonYesNo
        Case 5: msgButton = msoAlertButtonRetryCancel
    End Select
   
    Select Case DefaultType_1_to_5 [COLOR=#006400]'MsoAlertDefaultType[/COLOR]
        Case 2: DefaultType = msoAlertDefaultSecond
        Case 3: DefaultType = msoAlertDefaultThird
        Case 4: DefaultType = msoAlertDefaultFourth
        Case 5: DefaultType = msoAlertDefaultFifth
        Case Else: DefaultType = msoAlertDefaultFirst
    End Select
[COLOR=#006400]    ' Set Hook[/COLOR]
    hHook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHookProc, 0, GetCurrentThreadId)
[COLOR=#006400]    ' Display the messagebox[/COLOR]
    On Error GoTo OKOnly
    MyUniMsgBox = Application.Assistant.DoAlert(MsgTitle, MsgText, msgButton, msgBoxIcon, DefaultType, msoAlertCancelDefault, False)
    Exit Function
OKOnly:
    MyUniMsgBox = Application.Assistant.DoAlert(MsgTitle, MsgText, msgButton, msgBoxIcon, msoAlertDefaultFirst, msoAlertCancelDefault, False)
End Function


Hàm bổ trợ cho hàm trên:

Mã:
Private Function MsgBoxHookProc(ByVal lMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If lMsg = HCBT_ACTIVATE Then
        [COLOR=#006400]'De biet Charcode, dung ham ASCW("KyTu")[/COLOR]
        StrOK = ChrW$(272) & ChrW$(7891) & "&ng " & ChrW$(253)     [COLOR=#006400] 'Dong y[/COLOR]
        StrCancel = "&H" & ChrW$(7911) & "y"                        [COLOR=#006400]'Huy[/COLOR]
        StrAbort = "&L" & ChrW$(432) & "u l" & ChrW$(7841) & "i"   [COLOR=#006400] 'Luu lai[/COLOR]
        StrRetry = "&Xóa"                                           [COLOR=#006400]'Xoa[/COLOR]
        StrIgnore = "H" & ChrW$(7911) & "&y l" & ChrW$(432) & "u"  [COLOR=#006400] 'Huy luu[/COLOR]
        StrYes = "&Có"                                             [COLOR=#006400] 'Co[/COLOR]
        StrNo = "&Không"                                          [COLOR=#006400]  'Khong[/COLOR]
       
        SetDlgItemText wParam, IdOK, StrConv(StrOK, vbUnicode)
        SetDlgItemText wParam, IdCancel, StrConv(StrCancel, vbUnicode)
        SetDlgItemText wParam, IdAbort, StrConv(StrAbort, vbUnicode)
        SetDlgItemText wParam, IdRetry, StrConv(StrRetry, vbUnicode)
        SetDlgItemText wParam, IdIgnore, StrConv(StrIgnore, vbUnicode)
        SetDlgItemText wParam, IdYes, StrConv(StrYes, vbUnicode)
        SetDlgItemText wParam, IdNo, StrConv(StrNo, vbUnicode)
       
        [COLOR=#006400]' Release the Hook[/COLOR]
        UnhookWindowsHookEx hHook
    End If
    MsgBoxHookProc = False
End Function

Cấu trúc:

MyUniMsgBox Nội dung, Kiểu Icon + Các loại nút lệnh, Nút lệnh mặc định (từ 1 đến 5), Tiêu đề

attachment.php


Các bạn thấy viền xanh nhạt tại nút lệnh Hủy, đó chính là Nút lệnh mặc định, khi bấm Enter là nó thực hiện lệnh tại nút lệnh này. Vì đây là nút thứ 2 nên có cấu trúc:

Msg = MyUniMsgBox(MsgXoa.Caption & .List(, 2) & " ] hay không?", vbQuestion + vbRetryCancel, 2, "THÔNG BÁO")
Chào thầy, Làm sao để tự động dừng vậy thầy, và em không muốn chọn Tỉnh thành phố nữa ạ
mong thầy giúp đỡ
 
Upvote 0
e muốn thay logo thì phải làm sao các a ơi. thanks
 
Upvote 0
Web KT
Back
Top Bottom