AX
エクセル(excel)での網掛け書式の消去。。。
身近なところで、以前取り上げた「デフォルトの問題」が隠れていた。

エクセルでセルに網掛けをしたあと、網掛け書式を消去することができない。

これは、「セルの書式設定」での「パターンの種類」で選択可能な値に「クリア」相当がないからである。

よく勘違いするのは、選択肢左上の真っ白な「塗りつぶし」であるが、これではエクセルにて元々表示されている「枠線」を消してしまい、決して元には戻らない。
※2012/7/25 03:00 訂正・追記 を本文下方に行っています。
「決して元には戻らない。」ではなく、戻す方法があります。
「パターンの種類」で塗りつぶし(xlSolid)を選択後、「色塗りしていないセル」のみ選択して、「背景色」に「色なし」を指定すれば戻ります。
ただし、色を塗っていなかったセルを個別に選択して操作する必要があり、不便です。マクロで解決するしかないようです。詳しくは、本文下方を参照下さい。

b0032038_3445267.png

パターンの種類に設定できる値は、VBAやマクロでのヘルプにて「XlPattern 列挙」を検索すると表示される。
このうち、先の「塗りつぶし」は「xlPatternSolid」に相当し、クリアは「xlPatternNone」である。「xlPatternAutomatic」ではクリアにはならない。
※これら値は「xlPattern●●●」となっているが、「xl●●●」でも大丈夫なようだ。
b0032038_3451314.png

で、エクセルのメニューから、クリアに相当する「xlPatternNone」を選択しようとしてもできない。そもそも選択肢に表示されないからである。

選択範囲のセルの書式全体をクリアすることは、メニューバーから選択可能だが、網掛け以外の書式まで消えてしまう。

仕方がないので、下記の便宜的な手段を実行することにした。

VBA/マクロでの「イミディエィトエリア」で、下記のように入力し、Enterキーを押しながら実行していくという手段である。
Range("A1:B2").Select
Selection.Interior.Pattern = xlNone
無論、"A1:B2"については該当する範囲に置き換える必要がある。
※シート全体を対象としたマクロとして保存しておいて、必要なときに読み込んで実行するという方法もある。

ネット検索しても、他に良い方法はないようだ。
もっと良い方法について、どなたかご存じの方がおられたら、教えてください。

★追加 2011/08/31 08:46
上記方法ではセルに設定していた色も消えてしまった。。。別の方法を考えるしかないかな?

※2012/0725 03:00 追記
「パターンの種類」で塗りつぶし(xlSolid)を選択後、「色塗りしていないセル」のみ選択して、「背景色」に「色なし」を指定すれば、無事に元に戻った。
この2種類の設定変更(パターンの種類:xlSolid+背景色:色なし)=「xlNone」に相当するようである。
VBで、該当範囲の「色」が設定されているかどうかで判別させて、「色」が設定されて無い場合に「xlNone」を実行するようにFor-Nextループを組むしかないようである。

Sub clearPattern()
'---セルの網掛けパターンのみ消去
For Each sel In Selection
With sel.Interior
If (.PatternColorIndex <> xlNone) Then
'---パターンが設定されている場合
If (.ColorIndex <> xlAutomatic) Then
'---セル背景色として色が設定されている場合
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
Else '--- .ColorIndex = xlAutomatic
'---セル背景色として色が設定されていない場合
.Pattern = xlNone
End If
'--- 以下は、必要があれば実行、必要なければコメントアウト
.TintAndShade = 0
.PatternTintAndShade = 0
End If
End With
Next
End Sub

上記で、「.TintAndShade」と「.PatternTintAndShade」は、パターン操作をマクロで記録した時に自動的に入るので入れているが、変更していない場合には、入れる必要はないだろう。
※今更ながらなのだが、プログラム類を投稿本文中にいれるとき、行頭スペースの制御が厄介。
今回、表示用として<pre>~</pre>で囲んだのだが、表示された文章をテキストエディタにコピペすると改行が消えてしまう。

仕方ないので、コピペ用のテキストを下記に置いておく(自分用)
Sub clearPattern()
'---セルの網掛けパターンのみ消去
For Each sel In Selection
With sel.Interior
If (.PatternColorIndex <> xlNone) Then
'---パターンが設定されている場合
If (.ColorIndex <> xlAutomatic) Then
'---セル背景色として色が設定されている場合
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
Else '--- .ColorIndex = xlAutomatic
'---セル背景色として色が設定されていない場合
.Pattern = xlNone
End If
'--- 以下は、必要があれば実行、必要なければコメントアウト
.TintAndShade = 0
.PatternTintAndShade = 0
End If
End With
Next
End Sub
[PR]
by kisugi_jinen | 2011-08-31 03:57 | program。。。 | Trackback | Comments(0)
トラックバックURL : http://jinen.exblog.jp/tb/16203742
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
<< 人は何のために生きているのか。... 水槽用エア・ポンプを使ったベラ... >>



「ともし火に我もむかはず燈(ともしび)もわれにむかはず己がまにまに」(光厳院) --- 厳然とした境界を越え得ぬとき、その上でなお、越えうるものがあるとすれば、それは「情」である。
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
検索
カテゴリ
最新の記事
お知らせとリンク。。。
お知らせ
●コメントスパム対策のため、承認制に変更しました(2010.09.29)
●トラックバックのリンクチェック機能を追加しました。excite以外からのトラックバックをされる場合、当該記事へのリンクを埋め込んでください。
リンク
ゲストブック
---全体的なコメント等は、こちらへどうぞ。。。
来生自然のホームページ
---私の知の思想史。。。
鉄鼠
---「考える」ということに向き合う。。。
Genxx.blog
移転後http://blog.genxx.com/
---「情」を含めて専門的な立場から「こころ」を模索し続けるGenさんのブログ。。。
研幾堂
---山下裕嗣氏による哲学のサイト。以前、形而上学についてやりとりさせていただいた。
記事ランキング
最新のコメント
Kandomonmasa..
by kisugi_jinen at 01:29
Kandomonmasa..
by kisugi_jinen at 03:51
kisugi_jinen..
by Kandomonmasa at 14:28
> SumioBabaさ..
by kisugi_jinen at 10:41
「神」を完全に解明しまし..
by SumioBaba at 05:06
最新のトラックバック
究極の人工知能。。。ショ..
from 来生自然の。。。
所詮ゲーム、背景を勘ぐる..
from 来生自然の。。。
シン・ゴジラと所信表明演..
from 来生自然の。。。
ポケモンGOのお台場騒動..
from 来生自然の。。。
シン・ゴジラ。。。
from 来生自然の。。。
以前の記事
フォロー中のブログ
外部リンク
ブログパーツ
ライフログ
ファン
ブログジャンル
画像一覧