ELLの足跡

人は最後は一人だという…でも、…今は妻が傍にいてくれる…

仲間と集まった時のサイコロゲーム時にExcelで創ったサイコロを振ってみませんか!?

サイコロ振る動画
サイコロ



ってたサイコロ見当たらない…!!
サイコロゲーム如何してもやりたぁ~い!!

先ず関数使ってサイコロを作成しよう!?
サイコロ動画

 先ず、IMEパッドの文字一覧の中からサイコロマークを見つけ出して、そのサイコロをExcelシート上に表示させ・・・
 1~6の数字をランダムに・・・そのランダムに表示されたサイコロの目を取り出す・・・というイメージを関数の組合せで・・・
 今日は、私が行った方法を書いて置こうと思います。

  • 【サイコロのUnicordのコードポイントを知る方法】
      1. 先ず、タスクバーに表示されてる「」もしくは「A」を『右クリック』します。
      2. 開いたメニューの中から『IMEパッド』を選択します。


      1. すると、IMEパッド-文字一覧画面が開きますので、左側の文字カテゴリーの中から『その他の記号』を探します。
      2. 見つかったら、右側に表示されてる項目の中から『サイコロ』を見つけます。

      1. サイコロの1の目は『2680』、2の目は『2681』、3の目は『2682』、4の目は『2683』、5の目は『2684』、6の目は『2685』ということが解りました。


  • Excelシート上にサイコロを表示させる方法】
      • 先ず、UnicordのコードポイントはU+○○○○で表示されてるのですが、○○○○の数字は16進数で表されてるらしいので、16進数(HEX)で記述された数値を1から10までの10進数(DEC)に変換するための関数HEX2DEC関数を使用し『=HEX2DEC(2680)』と入力してみると、シート上のセルにポインターを持って行くと『9856』と10進数に変換されてますのでこの関数を使用します。


      1. 次に、Unicodeに対応する文字や記号を返すことのできるUNICHAR関数を使用して表示させてみたいので『=UNICHAR(HEX2DEC(2680))』と入力してみます。
      2. すると、見事に『サイコロの目の1』が表示されました。

      • ※ 挿入されたサイコロは見た目が小さいので大きく(今回はフォントサイズ120)しています。


      1. 上記のことを踏まえて、インデックス部分に指定した位置の値を取り出せるCHOOSE関数(インデックス , 値1 , [値2] , [値3] , ...)とこのインデックス部分に「最小値」を「1」以上、「最大値」を「6」以下の整数の乱数を発生させるRANDBETWEEN関数を使用して『=CHOOSE(RANDBETWEEN(1,6),』と入力します。


      • そして、値部分には先程、HEX2DEC関数とUNICHAR関数で表示させてる各サイコロの目を当てはめてゆき、少々長くなりますが以下の記述となりますので、コピーして使用してください。

      =CHOOSE(RANDBETWEEN(1,6),UNICHAR(HEX2DEC(2680)),UNICHAR(HEX2DEC(2681)),UNICHAR(HEX2DEC(2682)),UNICHAR(HEX2DEC(2683)),UNICHAR(HEX2DEC(2684)),UNICHAR(HEX2DEC(2685)))


    1. これで下準備は完成ですので、次はボタンをクリックしたらサイコロを振れるようにします・・・
      1. 先ず、リボンの『開発』タブを選択します。
      2. そして、開いたメニューのコントロール項目の『挿入』をクリックします。
      3. さらに開いたメニューのフォームコントロールの中の『ボタン』を選択します。


      1. 次に、ボタンを設置したいセルを左上角から右下角へ『ドラッグ』します。
      2. すると、マクロの登録ダイアログが開きますのでマクロ名を『好みの名前』を付けます。
      3. 次に『新規作成』ボタンをクリックします。


      • すると、Sub マクロ名()からEnd Subが入力表示された『VBAエディタ』が表示されます。
        ※ このSub マクロ名()とEnd Subの間に動作を指図するコードを入力するんです。


      1. 先ず、1行目には変数名を宣言するための準備の「Dim」をはじめに記入し、ループ処理の「i」、そして、整数型を宣言する「As Integer」で『Dim i As Integer』と入力します。
      2. 2行目にはループ処理を1~300までという意味の『For i=1 To 300』と入力します。
      3. 3行目には数式を再計算させる意味の『Application.Calculate』と入力します。

      1. 4行目には実行中の処理を一時停止してキーボードやマウスで処理出来るようにする関数『DoEvents』と入力します。
      2. そして、5行目には先程のForのループ『Next i』と入力します。
      3. まとめて書くと以下の通りです。
        このままコピーして貼り付けてお試しください。
        Dim i As Integer
        For i = 1 To 300
        Application.Calculate
        DoEvents
        Next i
      4. 貼り付けが出来たらVBAエディタを『閉じ』ます。


      1. Excelシートに挿入されたボタンの名前を変更したいのでボタンを『右クリック』します。
      2. 開いたメニューから『テキストの編集』をクリックして編集します。


      • これで完成です。
        今回のボタンの名前は『サイコロを振る』にしました。
        このボタンをクリックするごとにサイコロの目が都度変化します。

 今回はExcel関数の組合せでサイコロを表示させ、それをVBAで動かすという方法を解説しました。
 遊んでみたいと思われた方はExcel関数をコピーし、VBAもコピーしてご利用くださいね。

 

にほんブログ村 PC家電ブログ パソコンの豆知識へパソコンランキング