移り気なブログ

テーマなどない自由気ままな雑記帳です。

お絵かきパズルがマイブームです。

excelでお絵かきパズルを作りました。



病院の待ち時間を潰すためお絵かきパズルの雑誌を買って100円ショップで鉛筆と消しゴムを買って始めたらなんか面白くて入り込みました。



すんなり行くかと思いきや、けっこう大変で最後の大詰めで間違いに気づき大部分を消しゴムで消して再挑戦、てな感じで手こずります。
鉛筆での塗りつぶしがうまくできなくて引いた線はガチガチで見にくいし、消しゴムで消した後はくっきりと残っちゃうしで紙の上ではなかなか大変なのでパソコンで出来ないかと考えたのです。



お絵かきパズル自体は完璧な表なのでexcelの得意分野のはずです。
どこまで出来るかとつくりはじめました。



マスを塗りつぶす方法はセルに "a" を打ち込んだらセルの色が黒く塗りつぶされるようにしました。
「条件付き書式」を使いました。
文字の色がデフォルトの「黒」なので塗りつぶしを黒にすれば見た目は黒のセルになります。
文字色を「赤」にして塗りつぶしを赤に設定すれば赤のセルになります。
文字色を「黒」のままで塗りつぶしの色を赤に設定すると赤のセルに黒文字のaが表示されてしまい美しくないです。
同じように空きマスの場合は "(スペース)" を打つとドットの網掛けになるように「条件付き書式」を設定しました。
(スペース)以外を打ち込むとドットと文字が重なって美しくないです。



間違ったらDELボタンで消せます。
消しゴムの削りかすは出ません。
線はまっすぐ引けます。
塗りつぶしにムラは出ません。




あと、ひとつの行(列)が完了したとき見た目でわかるように数字エリアに色がつくようにして、なおかつ数字が黒からグレーに、文字も斜体になるようにしました。
これで視認性がだいぶ上がって見やすくなりました。
紙でやっていたときは完了した数字と未完の数字がゴチャゴチャになって苦労しました。




あと、今のマスを中心にして行方向と列方向に色をつけて選択しているお絵かきエリアと数字エリアの関連を見やすくしました。
セルを選択するとその行と列がハイライトになるようにしたのです。
これで行(列)の間違いがなくなりました。


実際のパソコンの画面はこんな感じです。
f:id:uzu_0:20110419000729j:image

画面の説明です。
左上の「リセット」ボタンはお絵かきエリアをクリアしてまっさらにします。
最初からやり直すときに使います。
マクロを組んであります。



「新規ゲーム」ボタンはお絵かきエリアと数字エリアをクリアしてまっさらにします。
新しい問題を作るときに使います。
マクロを組んであります。



お絵かきエリアの黒のマスは "a" を打ち込むと黒くなるようになっています。
お絵かきエリアの網掛けは "(スペース)" を打ち込むと網掛けになるようになっています。
数字エリアの黄色になっている行(列)は完成したという目印です。
数字はグレーの太字斜体に変化します。
(この画面では一番上の行が完成した行です)
薄い青の行(列)は今選んでいるマス(アクティブセル)を中心に伸びています。




ちょっと数式の説明を。。
画面のAJ列とAK列に数式が入っています。
AJ11:=SUM(A11:J11)        11行目の数字エリアの数字を合計しています。
AK11:=COUNTIF(K11:AI11,"a")    11行目のお絵かきエリアの"a"の数(黒マス)を合計しています。
AJ11=AK11の時に決められた書式に変化させることを目的にします。
この二つの数式をだーっとコピー&ペーストします。
普段はこの2列の文字色を白に設定して見えなくしています。
そのほうが美しいです。
同じ数式を列方向にも設定します。
これで条件付き書式設定の準備ができました。



あとひとつ忘れていました。
薄い青の行(列)を表示する為の方法です。
Visual Basic Editorにコードを打ち込みました。



Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = True
End Sub



というものです。
おまじないです。



この作業を終えてから「条件つき書式設定」をしました。
次のようにしました。
まず数字エリアの書式設定。
f:id:uzu_0:20110419003752j:image
「条件1」は行(列)が完成したら数字エリアのセルに色をつけて数字をこの書式にする、というものです。
「条件2」はアクティブセルを中心に行方向と列方向に色をつける。というものです。
この例ではAB列の条件付き書式を設定しています。
これをすべての数字エリアのセルに設定します。



次にお絵かきエリアの書式設定。
f:id:uzu_0:20110419003753j:image
「条件1」はセルに"a"が入力されていたらセルを黒く塗りつぶす、というものです。
「条件2」はセルにスペースが入力されていたらセルに網掛けをする、というものです。
「条件3」はアクティブセルを中心に行方向と列方向に色をつける。というものです。
これをすべてのお絵かきエリアのセルに設定します。



excelでお絵かきパズルを作り終えたらなんかお絵かきパズルに飽きちゃいました。

f:id:uzu_0:20110419010217p:image f:id:uzu_0:20110419010218p:image f:id:uzu_0:20110419020503p:image