連載
» 2016年08月04日 05時00分 公開

Excelマクロ/VBAで始める業務自動化プログラミング入門(5):セルの数値、フォント、文字位置、背景色、けい線など表示形式/書式設定の使い方 (4/4)

[薬師寺国安,PROJECT KySS]
前のページへ 1|2|3|4       

ClearFomatsメソッドで表の書式の一括削除

 表に適用した書式を一括で削除してみよう。書式を削除するにはClearFomatsメソッドを使用するだけだ。マクロはリスト8のようになる。

Sub 表書式のクリア()
  Range("B3", Range("B3").End(xlDown).End(xlToRight)).ClearFormats
End Sub
リスト8 表の書式の一括削除

 前回の「Endプロパティで、あるセルを基準に末端まで選択」を参考に、「B3セル」の終端行(xlDown)、終端列(xlToRight)を選択し、ClearFormatsメソッドで全書式を削除する。図は省略する。

PasteSpecialメソッドで形式を選択して貼り付け

 次にExcelメニューの[貼り付け]→[形式を選択して貼り付け]のマクロを記述してみよう。図11を見ると分かるように、[形式を選択して貼り付け]には「全て」「数式」「値」「書式」などといった形式で貼り付けることが可能だ。

図11 形式を選択して貼り付けの内容

PasteSpecialメソッドの使い方

 「形式を選択して貼り付け」にはPasteSpecialメソッドを使用する。書式は下記の通りだ。

PasteSpecialメソッドの書式

Rangeオブジェクト.PasteSpecial({Paste},{Operation},{SkipBlanks},{Transpose})


 Pasteには表8の値のいずれかを指定する。Operationには表9の値のいずれかを指定する。

 SkipBlanksには、空白セルを無視するかどうかをTrueとFalseで指定する。Trueの場合は、空白は無視、Falseか省略した場合は空白も貼り付けられる。

 Transposeには、行列の入れ替えをTrueかFalseで指定する。Trueの場合は、行列が入れ替わって貼り付けられる。Falseか省略した場合は、行列の入れ替えは行われない。

表8 Pasteに指定する主な値
定数 内容
xlPasteAll 全て(規定値)
xlPasteFormulas 数式
xlPasteValues
xlPasteFormats 書式
xlPasteComments コメント
xlPasteValidation 入力規則
xlPasteAllExceptBorders けい線を除く全て
xlPasteColumnWidths 列幅
xlPasteFormulasAndNumberFormats 数式と数値の書式
xlPasteValuesAndNumberFormats 値と数式の書式
参考「XlPasteType 列挙型 (Microsoft.Office.Interop.Excel) - MSDN


表9 Operationに指定する値
定数 演算
xlPasteSpecialOperationNone しない(規定値)
xlPasteSpecialOperationAdd 加算
xlPasteSpecialOperationSubtract 減算
xlPasteSpecialOperationMultiply 乗算
xlPasteSpecialOperationDivide 除算
参考「XlPasteSpecialOperation 列挙型 (Microsoft.Office.Interop.Excel) - MSDN

 セルにデータを貼り付ける場合は、計算式も一緒に貼り付ける必要があったり、逆に値だけが欲しい場合があったりと、いろいろな条件でデータを貼り付けたい場合がある。

 この「形式を選択して貼り付け」をマクロ化しておくと、いちいち手数を踏んで、メニューから操作する必要がなくなる。ボタンを配置してボタンにマクロを登録すると、ボタンクリックのみで希望したデータが貼り付けられる。大変、効率的だ。

形式を選択して貼り付けるマクロの例

 では、図12の表を書式(xlPasteFormats)のみを指定して、E3のセルにコピーしてみよう。C8のセルにはSum関数の計算式が入っている。

図12 赤い枠線内に書式だけをコピーする

 マクロはリスト9のようになる。B3〜C8のセルの内容をコピーし、E3のセルに書式だけを貼り付けている。

Option Explicit
Sub 書式の貼り付け()
  Range("B3:C8").Copy
  Range("E3").PasteSpecial xlPasteFormats
  Application.CutCopyMode = False
End Sub
リスト9 書式だけを貼り付ける

 「Application.CutCopyMode = False」でコピーモードをオフにしている。この記述はなくてもいいが、書いていない場合は、B3〜C8のセルの範囲が点線で点滅したままの状態になる。この点滅を解除するために、この一文を追加している。

 結果は図13のようになります。

図13 書式だけが貼り付けられた

けい線なしで、書式と値と数式のみをコピー

 次は、けい線なし(xlLineStyleNone(表6))で、値(xlPasteValues(表8))と書式(xlPasteFormats(表8))だけをコピーしてみよう。

 リスト10のように記述する。

Sub けい線なしの貼り付け()
 Range("B3:C8").Copy
 Range("E3").PasteSpecial xlPasteFormats
 Range("E3").PasteSpecial xlPasteValues
 Range("E3:F8").Borders.LineStyle = xlLineStyleNone
 Application.CutCopyMode = False
End Sub
リスト10 けい線なしの貼り付け

 実行すると図14のようにけい線なしでコピーされる。

図14 けい線以外のものがコピーされた

次回は、プログミングの「条件分岐」「繰り返し処理」

 以上で、「セルの操作」についての解説は一応終了する。まだまだ紹介したいことがあるが、またの機会にでも紹介できればと思う。

 次回は、プログミングの「条件分岐」「繰り返し処理」などについて解説する予定だ。具体的にイメージしづらい話かもしれないが、次々回解説するデータ操作やグラフなど、Excelの肝といえる部分を扱う上で欠かせないノウハウなので、頑張って着いて来てほしい。

■更新履歴

【2016/8/4】Windows 10、Excel 2016に対応しました。


参考書籍

著者プロフィール

PROJECT KySS 薬師寺 国安(やくしじ くにやす)

1950年生まれ。フリーVBプログラマ。高級婦人服メーカーの事務職に在職中、趣味でVBやActiveXに取り組み、記事を執筆。2003年よりフリー。.NETやRIAに関する執筆多数。Windowsストアアプリも多数公開中(約270本)。

 

Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。

Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。

Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。

PROJECT KySSは、1997年に薬師寺聖と結成したコラボレーション・ユニット


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。