office  円形ルーレットを作りたい
 


  
要API/サンプル有
TOPExcel/Word/PowerPoint
○ポイントはドーナツグラフのSeriesCollection コレクション オブジェクト
 ルーレットといえば、やっぱり円形。ルーレットをEXCELで作っておいて、ゲームの時に使えば、「おっ」と驚かせることができるかもしれませんね。そこで、ドーナツグラフを使ってハイライトがクルクル回るルーレットを作ってみましょう。

(1) ドーナツグラフの系列を作成
 (この例では セルA1からA20までの全部のセルに数値 1 を入力します)

(2) セル A1:A20 を選択して [挿入]タブ>「グラフ」グループの[その他のグラフ]リボン>[ドーナツ]として、ドーナツグラフを作成(図1) office
(図1)ドーナツグラフ

(3)ドーナツグラフを選択(図2)して、グラフツールの[書式]タブ>「図形のスタイル」グループの[図形の枠線]プルダウン>として、ドーナツの区切り枠線の色(図3)と、ドーナツの各系列の色(図4)を決める
 (この例では枠線を黒、各系列を白とします)
office
(図2)ドーナツグラフを選択

office
(図3)ドーナツグラフの枠線色を決める

office
(図4)ドーナツの各系列の色を決める

(4) ドーナツグラフの系列(A列)を選択し、右クリック>ショートカットメニュー>[非表示(H)]として、データ系列を非表示化

(5) グラフエリアをクリックしてグラフオブジェクトを選択

(6) 名前ボックスに Roulette と記入(図5)
 (この例では Roulette という名前をマクロから呼び出します)
office
(図5)グラフオブジェクト名の設定

(7) VBEを開いて標準モジュールにコードを記入。コード例は下記

○基本構成
 まずグラフの要素数を抽選範囲の数に合わせる処理を行います。そのために、便宜上グラフの参照するセルの範囲に数値の 1 を入力しグラフの範囲を再設定します。

 次に、抽選範囲内で乱数を発生させ、SeriesCollectionコレクションオブジェクトのPointsプロパティのインデックス値を 1 ずつ増やし、ColorIndexプロパティでハイライトカラーに変えてゆきます。このとき、Pointsプロパティのインデックス値で、色を変えた一つ前のインデックス値のColorIndexプロパティはベースカラーに戻してゆきます。

 抽選範囲の最大値になったら、Pointsプロパティのインデックス値は再び 1 に戻します。これをループさせながら、Sleep API関数を挟んで少しずつループ速度を落としてゆきます。

○関連情報・その他の方法
EXCEL2000の場合はこちら
ルーレットを作る(EXCEL2010)

○サンプル
サンプルファイルはこちら(要解凍) 14KB

○注意
・抽選範囲myRandSpanが大きい場合 rt, slpTime は小さい値にしなければ、ルーレットの数字の切り替わりが最後の方で間延びします。
・マクロを途中で止める場合は、Escキーを押してください。