FC2ブログ

Excelじゆうちょう

Excelのお絵描きツール『りっぷ2(りっぷつぅ)』のサポートページ、まずは「はじめに」をご覧ください。 [NewEntry] [Admin]

記事更新カレンダー

10 « 2018-11 « 12
- - - - 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 -

やたらに多いカテゴリ

比較的新しい記事

新しいコメント

ありがたいブログ拍手

拍手コメント一覧(拍手はしない)

さみしいトラックバック

申し訳ないプロフィール

申し訳ない

管理人  [ 申し訳ない ]

pxivもやってます
リンクの一番上からのぞきに来てください
※閲覧にはユーザー登録が必要です

RSSってなんぞ?

広告は消せないらしい

FC2Ad

        --------       スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

        2012-01-09       名前の削除

ブログ連続更新10日目、そろそろExcelの記事を書いておかないといけません。

今日のお題は、名前の削除。
セルに任意の名前をつけるあれ、[Ctrl]+[F3]キーのショートカットで編集できるあれです。

↓セル(1,1)に「Excelじゆうちょう」↓
セル(1,1)に名前

さて、このセルの名前ですが、自分では名前をつけていないのに知らない間にものすごく増えていたという経験はありませんか?
もしくは、編集を繰り返している間に参照が無効になって使えなくなった名前だらけになってしまったとか?

名前が増えたのはきっと、シートをコピーする際にそこに定義されていた名前をまるまる引っ張ってきてしまったからでしょう。
参照が無効になった名前を削除するには、名前の管理(旧Excelでは名前の定義)から削除しなければなりません。
これがなかなかめんどくさい。
新Excelでは複数選択をして一括削除ができるようになりましたが、旧Excelではひとつずつちまちま削除していかなければなりません。
旧Excelでひとつのブックを何度も使いまわして溜まりにたまったごみの名前の整理は、気が遠くなるほど面倒です。

いっそのこときれいさっぱりクリアにしてしまいましょう。

そのためのマクロが以下です。
※必要な名前が消えてしまう恐れがあるので注意


'【コードウインドウ】
Private Sub deleteNames1() '名前を全削除
Do While ActiveWorkbook.Names.Count > 0 '名前が定義されていれば
  ActiveWorkbook.Names(1).Delete '名前を削除
Loop
End Sub

Private Sub deleteNames2() '名前を全削除
Dim Obj_name As Name '名前オブジェクト変数
For Each Obj_name In ActiveWorkbook.Names 'ブックの名前の数だけ繰り返し
  Obj_name.Delete '名前を削除
Next Obj_name
End Sub


ふたつのマクロはどちらも同じ処理をしています。
処理速度だけなら下のほうが早いのでおすすめします。

上はというと、この名前はコレクションで管理されており、インデックスに注意してほしいと思って例をあげています。
名前のインデックスは一定ではなく、削除や追加によって変わってしまいます。
この辺りはVBAで操作でもしない限り気にする必要はないかと思いますが、VBAで管理してやろうと考える際には気をつけないといけません。

また、新Excelではブックに対して有効な名前かどうかを示すValidWorkbookParameterプロパティが追加されています。
これを使えば、不要な名前だけを削除する手助けになるかもしれません。
具体的には、参照が無効になった名前、シートのコピーで複製された名前、印刷範囲などが該当します。
もちろん、新規で登録する際に範囲をシートにしていてもこれに該当します。
(私が知っている範囲はこれだけです、もしかしたらほかにもあるかもしれません)

本当に必要な名前だけを、範囲をブックにして登録しておけば…ってちょっと制約が厳しいですね。
まあ、一応参考までにマクロを記載しておきます。


'【コードウインドウ】
Private Sub deleteNames3() '有効でない名前を削除
Dim Obj_name As Name '名前オブジェクト変数
For Each Obj_name In ActiveWorkbook.Names 'ブックの名前の数だけ繰り返し
  If Obj_name.ValidWorkbookParameter = False Then '有効な名前はここがTrue
    Obj_name.Delete '名前を削除
  End If
Next Obj_name
End Sub


旧Excelではこのプロパティはサポートしていませんのでご注意を。
スポンサーサイト

コメント

コメントの投稿

管理者にだけ表示を許可  

トラックバック

http://likep.blog63.fc2.com/tb.php/266-4fa57c5d

 | HOME | 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。