« HTMLファイルを生成 | トップページ | 数式を値に変換する »

2010年5月 1日 (土)

[書式設定]をクリアするときの不便を解消

日付けが入っているセルを、
メニューバーの[編集]-[クリア]-[書式設定]で
書式設定をクリアすると
フォントの色だけをなくしたいだけでも
「表示形式」までクリアされて数字になってしまいます。

そこで、また表示形式を設定しなおす…
なんてことをしたことありませんか?

エクセルにとっては、「表示形式」も「装飾」も
「表面的なこと」で括られているようです。

人間にとっては、「表示形式」が設定されてないと
理解できない場合が多いと思います。
逆に「装飾」はなくても情報は伝わります。
(ここでいう「装飾」とは、
フォントの色・大きさ・太さやセルの枠線、背景の色など。)

人間の感覚的に「表示形式」と「装飾」は違うと思いますが、
それを「書式設定」とひとつにまとめてクリアするところに不便を感じます。

この不便を解消するために、
[編集]-[クリア]で現れる項目に
[表示形式]と[装飾]を追加します。
Vba20100501a_2

コードはこちら

まず下のコードを標準モジュールにコピペします。

表示形式と装飾をクリアするコード:

Sub ClearNumberformat()
'書式の中の「表示形式」をクリアする

    Selection.NumberFormatLocal = "G/標準"
   
End Sub

Sub ClearDecoration()
'書式の中の「装飾」をクリアする

    With Selection
        .Interior.ColorIndex = xlNone
        .Borders.LineStyle = xlNone
        .Interior.Pattern = xlPatternNone
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .MergeCells = False
    End With
    With Selection.Font
        .ColorIndex = xlAutomatic
        .Bold = False
        .Italic = False
        .Name = Application.StandardFont
        .OutlineFont = False
        .Shadow = False
        .Size = Application.StandardFontSize
        .Strikethrough = False
        .Subscript = False
        .Superscript = False
        .Underline = xlUnderlineStyleNone
    End With
End Sub

これら2つのコードは、
選択している範囲をそれぞれ「表示形式」と「装飾」をクリアします。

次のコードで
[編集]-[クリア]で現れる項目に
[表示形式]と[装飾]を追加します。

VBAでメニューをカスタマイズする方法については、
マイクロソフトサポートオンラインの次の頁が詳しいです。
『Excel のメニューおよびメニュー バーをカスタマイズする方法』

表示形式と装飾をメニューに追加するコード:

Sub macro100501a()
'メニューバーの[編集]-[クリア]の項目に追加
'[表示形式]…書式の中の「表示形式」をクリアする
'[装飾]…書式の中の「装飾」をクリアする

   With CommandBars("Worksheet menu bar").Controls("編集(&E)"). _
    Controls("クリア(&A)")
      .Controls.Add(Type:=msoControlButton, Before:=1).Caption _
        = "表示形式"
      .Controls("表示形式").OnAction = "ClearNumberformat"
      .Controls.Add(Type:=msoControlButton, Before:=1).Caption _
        = "装飾"
      .Controls("装飾").OnAction = "ClearDecoration"
   End With
End Sub

実行後のメニュー
Vba20100501b_2

最後に、追加したメニューを削除するコードです。

表示形式と装飾をメニューから削除するコード:

Sub macro100501b()
'[表示形式]と[装飾]をメニューから削除する

    With CommandBars("Worksheet menu bar"). _
        Controls("編集(&E)").Controls("クリア(&A)")
        .Controls("表示形式").Delete
        .Controls("装飾").Delete
    End With
End Sub

Excel2007からはメニューがなくなって
「リボン」なるものになったようですので
メニューの追加はできないと思います。

|

« HTMLファイルを生成 | トップページ | 数式を値に変換する »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [書式設定]をクリアするときの不便を解消:

« HTMLファイルを生成 | トップページ | 数式を値に変換する »