top of page

​タグ一覧

配列処理(73)

階層化フォーム(33)

ファイル操作(28)

開発事例(22)

シート・セル操作(18)

図形操作(13)

コード自動生成(10)

ユーザーフォーム(9)

文字列操作(8)

設計思想(7)

開発効率化(6)

数学(6)

GAS(5)

アニメーション(5)

技術解説(4)

講座実施報告(5)

イミディエイトウィンドウ(4)

Googleスプレッドシート(4)

副業(4)

クリップボード(4)

条件付き書式(4)

その他(4)

ココナラ(3)

小説(3)

HTML(3)

JavaScript(3)

OneDrive(2)

イベントプロシージャ(2)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

介護(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

罫線(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

ステータスバー(1)

コード解析(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

溶接ロボット(1)

保育士(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

放課後等デイサービス(1)

児童福祉支援(1)

学校(1)

UI(1)

CAD(1)

カーソル操作(1)

怪奇・六角セルEXCEL

更新日:2025年12月30日

旧ブログからの人気のあった記事の転載です


こんな投稿をしたので、今回はこの解説。




通常、EXCELのセルは四角形で構成されていますが、このEXCELは六角形で構成されています。


いつもどおり、用途は特にありません。



お題は、このようなEXCELはどう作るか?


ツイッター上では



「図形(オートシェイプ)を使用しているのでは?」


「いや、カーソルも動いているから図形ではない」


「セルを斜め半分に塗りつぶしている?」



など、嬉しくも議論の的になりましたが、正解はこちら。






セル書式設定のなかの「文字方向」を変えて「塗り潰し色」を指定すると斜めに塗りつぶされます。


半分バグみたいなEXCELの機能ですが、六角形状にセルを塗りつぶす事ができます。



あとは、Worksheetのイベントプロシージャのうち、「クリック」のイベントプロシージャで、各六角形をクリックしたら「黒」⇔「白」で塗りつぶすようにマクロを作成するだけ。



以降では、実際に「黒」⇔「白」の塗り潰しの切替をどのようにやっているのかを解説していきます。



◯実装コード


まず、六角形の形をしたセルの中の6つのセルに「1,2,3,4,5,6」の値を入力しておきます。


この入力値によって、クリックした位置を認識させます。


六角形セル



次にコード。


やっていることは、



①変数の準備(6つのセルを格納する)


②クリックしたセルの値「1,2,3,4,5,6 のどれか」より6つのセルを変数に格納


③エラー回避で処理できなかった分を改めて処理


④セルの着色 「黒」⇔「白」



詳細はコード内のコメント参照でお願いします。


分かりにくいだろうなァ、と思うところは次に解説を載せています。


六角形セルコード解説


◯コードのよくわからんところかもしれんところ解説



13行目


On Error Resume Next



もし、クリック動作で1行目や1列目をクリックしてしまうと、六角形は一部しか描写されていない部分になってしまいます。


すると、コード16~61行目の6つのセル設定の際に、Offset関数でワークシート外のセルを設定しようとしてエラーが生じてしまう可能性があります。



例えば・・・Range("B1").Offset(-1,0) なんてことしてしまったらエラーが起きますね。


「B1」セルの上にオフセットしたらセルはありませんから。



13行目の「On Error Resume Next」はこれを回避します。


しかし、回避すると、Target1Target6の変数のうちいずれかで、変数が入力されていない場合が生じます。



すると、76行目のセルの結合でエラーが生じます。


ですので、変数が入力されなかった変数(Nothingになっている)は67~72行目で再設定を行います。




76行目


Set UnionCell = Union(Target1, Target2, Target3, Target4, Target5, Target6)



75行目までで設定した6つのセルを全部1つのセルの固まりで結合します。


このときに使用しているのがUnion関数です。


Union関数はVBA専用の関数です。



次の80~88行目で実際に「黒」⇔「白」のセルの書式設定を行うのですが、Target1~Target6の6つのセルを1つづつ書式設定すると、コードが長ったらしくなりますし、動作が遅くなります。



Union関数でセルを結合しておくと、6つのセルを一気に書式設定できるというわけです。



◯参考投稿


今回紹介した方法以外の方法でも再現が可能なようです。


いろいろな方が参考の投稿をしてくださいましたので、紹介させていただきます。


私も大変勉強になりました☆。



セルのグラデーション機能を用いて1セル状で斜めだけに塗りつぶす方法です。


こちらの方法でもいろんな作品が作れそう(作れた)ので、また紹介と解説を載せておこうかなぁと思います。(気分次第)







Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

Softex-Celware

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page