ボロボロ皇帝のボロ切れと塊

ボロボロ皇帝が悪態、嫌み、好み、何でも己の視点だけで自由に吐く「偏」な場所。たまにExcel、家電、音楽等についても好きに吐いてる。

ボロボロ皇帝が悪態、嫌み、好み、何でも己の視点だけで自由に吐く「偏」な場所。
Excel、家電、音楽、ゲームイラスト小説映画、性癖について等、何でも好きに吐いてる。

どうでも良いかもしれんが背景色変わっていくの見てくれ。
更にどうでも良いかもしれんがアイコンが息してるの見てくれ。


我輩は何にも制約されない身、
「耐えぬ」事を恐れないと決めたのだ!
我輩は好きなときに悪態をつく!
妬み僻み嫉みを背負い、
マイナーだろうが邪道だろうが
我輩は我輩の道を行く!
好きなものは懸命で不器用な諸君,
嫌いなものは器用で完璧を気取った奴らだ。
         

【VBA】指定範囲内で乱数生成するだけのマクロ

 

去年か一昨年ぐらいの事。

サボりの日々が約束された最高の席で、ほぼ毎日antix(Linuxの超軽量OS)内に元々入っていたボードゲームに明け暮れていた我輩。
数は19あり、王道リバーシから、謎の運ゲーロボットまで、それはそれは楽しくやりこんだ。

 

そんな中、hitoriというゲームのシンプル且つ単純なルールに、


これ、Excelで作れるんじゃね(´・ω・`)


と思った我輩は、壮大な夢を追い求め…

 

乱数生成を覚えた。

 

まず、乱数生成には全く関係ないが、
【hitoriルール説明】
最低5×5(縦横同数)のマス内へランダムに入った、1~マス数+1までの数字を、縦横でダブらないように間引く。※例:5×5の場合は数字がランダムに1〜6まで入っている。
ただし、間引こうとした数字の隣に、既に間引かれている数字がある場合は間引けない
→全数字をhitoriすなわちぼっちにすることが目的。

 


では早速、以下が乱数生成のVBAコードである↓

※不要なコメントアウトは消してどうぞ。

 

Sub Ransu() 'マクロ名は任意

Dim cl As Range 'clは変数。Range型でっせ、という宣言(おしらせみたいなもん。一応無くても動くが、あるとエラーのとき間違いに気づきやすい、というか型不一致の間違いが減る気もする)。

For Each cl In Selection  'clは任意の選択範囲でっせ。
Randomize 'ランダムでっせ。※これを入れないと乱数生成→保存→そっ閉じ→開き直し→乱数生成 でデジャ・ヴが生まれる(初回と全く同じ整数が同じパターンで生成される)。
cl.Value = Int(6 * Rnd + 1) 'int=整数。intで囲わないと小数点以下含む乱数が生成される。だって整数って言ってないでしょ?みたいな感じ。
Next cl 'あとはこれを範囲内埋めるように繰り返す。

End Sub

 

公式(?)は、Int((上限値 - 下限値 + 1)* Rnd + 下限値)らしい。
例えば二進数だとInt(2 * Rnd + 0)になる。

以上。

 

さて、hitoriはうまく作成出来たか、ということだが、ただの乱数じゃ成立しなかったボードゲームってのはシンプルなようでいて崩壊しないよう練りに練られた奥が深いやつなのだな。

 

f:id:wornoutemperor:20211007182400j:plain

↑プレイしやすいようにこんなことまで考えたのに(ただの条件付き書式)。