[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『抽選くじ』(えりか)
Excel2000です。
年末の社内行事で従業員の中から10人ほどに、抽選で
プレゼントを渡したいのですが、この抽選の過程を
プロジェクターで投影して演出したいと考えています。
以下のようなものができればベストなのですが、
アドバイスいただけるとうれしいです!!
@コマンドボタンまたはキーボードを押して始動
A停止は自動でも可
Bあらかじめ2列の表に部署、氏名を入力しておき、
その中から抽出。
C挙動として、まず部署が表示され、その後 数秒経過後に
氏名が表示される。
※自分で調べてみたところ、C以外はrand,rank,int関数を
使って理想の形が再現できたのですが、先に部署を
表示させ、その後に氏名が表示されるという演出が
できませんでした。
よろしくお願いします。
抽選までできているのでしたら、後はVBAで氏名の部分を図形で隠しておいて 数秒後に図形を非表示にするか透明にしていくなどの方法もあります。 ただ、10回連続で動かすということを考えると氏名を隠す前に次の人の氏名を 表示してしまうというオペレーションミスが考えられるので、抽選から表示ま でを行う処理を一括でVBAにさせるのが無難だと思います。 また、必要であれば同じ人に当たらないような制御をしたりも。 次の抽選に行くという運用でもカバーできます。
(やっちん)
ご自身でいろいろ作られたので、余計なお世話ですが 私ならというのを作ってみました。 1枚目のシートは白紙に、2枚目のシートのA列に部署、B列に名前のリストを 置き、下記のマクロをお試しください。
ご質問への回答は、マクロ中 「'// 当選者の表示」の部分で、前後は蛇足 です。
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Loto() Dim listWS As Worksheet Dim dispWS As Worksheet
Set dispWS = Worksheets(1) Set listWS = Worksheets(2)
listWS.Columns(3).Clear dispWS.Cells.Clear dispWS.Cells.Interior.ColorIndex = 38
'// 表示シートのフォーマット With dispWS .Columns(1).ColumnWidth = 10 .Columns(2).ColumnWidth = 40 .Columns(3).ColumnWidth = 40 .Rows(1).RowHeight = 40 .Rows(2).RowHeight = 50 With .Range("B2:C2") .Borders.LineStyle = xlContinuous .Borders.Weight = xlMedium .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Interior.ColorIndex = 2 .Font.Size = 36 End With End With
Dim r r = 1 For i = 1 To 10 '// 当選人数 dispWS.Range("B2:C2").Font.ColorIndex = 8 For j = 1 To 12 '// ローテーション時間 sk = Int(Rnd() * 20) For k = 1 To sk Sleep 10 * j r = r + 1 If listWS.Cells(r, "A").Value = "" Then r = 1 Do While listWS.Cells(r, "C") <> "" r = r + 1 If listWS.Cells(r, "A").Value = "" Then r = 1 Loop dispWS.Cells(2, "B").Value = listWS.Cells(r, "A").Value If j > 7 Then dispWS.Cells(2, "C").Value = "******" Else dispWS.Cells(2, "C").Value = listWS.Cells(r, "B").Value End If Next Next
'// 当選者の表示 dispWS.Range("B2:C2").Font.ColorIndex = 3 Sleep 3000 For n = 1 To Len(listWS.Cells(r, "B").Value) dispWS.Cells(2, "C").Value = Left(listWS.Cells(r, "B").Value, n) Sleep 2000 Next MsgBox listWS.Cells(r, "B").Value & "さん、当選おめでとうございます。", vbOKOnly, "*****年末大抽選会*****" With dispWS.Range("A5") .Offset(i, 0).Resize(1, 2).Interior.ColorIndex = 2 .Offset(i, 0).Resize(1, 2).Borders.LineStyle = xlContinuous .Offset(i, 0).Value = listWS.Cells(r, "A").Value .Offset(i, 1).Value = listWS.Cells(r, "B").Value & "さん" End With listWS.Cells(r, "C").Value = "◎" Next End Sub (Mook)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.