罫線で立体を表現するには

ここでは、オートシェイプを使わずに罫線で立体表現をするマクロを紹介します。

このマクロですが、実際に私が資料を作る際に「オートシェイプを使わずに絵を表現するにはどうしたらよいか?」ということを考えたのがきっかけです。

私はExcelの資料を作る際に「資料作成」自体に時間が取られるのを好みません。どういう資料であるべきかなどの本質的な部分に時間をより多く使いたいことと、他に作業がある場合に資料作成自体に時間をかけられない、というのもあります。だからと言って、あとで見て分からないような雑な資料は作りたくない、というのもあります。

オートシェイプは絵を表現するには便利ですが、位置や微調整などに時間が取られやすいことと、テキストが文字列検索で引っかからないという難点があり、時間をかけずに資料を作りたい場合には使い勝手が悪い面があります。ついでに言えば、初期状態の青背景+黒文字が気に入らない、ってのもあります。

そこで、上に書いた「オートシェイプを使わずに絵を表現するには?」ということを考えたときに、「別に絵じゃなくても絵っぽく見えればよくね?」→「絵といっても実際には四角の箱を並べてるのがほとんど」→「じゃあ罫線で箱を表現できれば十分」という発想に至りました。

以下がオートシェイプと罫線立体化の違いです。上がオートシェイプで下がマクロで立体的な罫線を引いた方です。分かりやすいようにグリッド線は消してます。

以下もマクロで罫線を引いて立体化していますが、この程度でよい資料でしたらオートシェイプを使う必要がなくなり資料作りは早く済みます

罫線で立体表示するマクロ

以下のマクロは選択範囲のセルの外枠に立体的に見える罫線を引きます

関数が2つありますが、実行するのは1つ目のSet3DLine()関数の方です。2つ目のAdjustColor()関数は色の濃い、薄いを調整する関数です。

コードは長いですが、やっていることは大したことをしていません。Bordersプロパティが上下左右の線の太さと種類と色をそれぞれ設定するためその分コードも長くなっています。

太線+実線で、線の色は選択範囲の一番左上のセルの背景色を基準に、左上側を薄くして、右下側を濃くすることで立体っぽく見えるようにしています。なお、背景色が未設定のセルの場合は、グレーの枠線を付けるようにしています。

線はあえて外側にしか引かないようにしています。その理由は上のサンプルのように、箱の中に小箱があるような場合に小箱の線に影響しないように考慮してのことです。

使い方

枠線を付けたいセル範囲を選択します。

選択後にSet3DLine()関数を実行します。実行した状態では選択されたままですのでわかりにくいですが、選択範囲を外すと以下のように枠線が設定され立体化されます。