セルの数値、フォント、文字位置、背景色、けい線など表示形式/書式設定の使い方:Excelマクロ/VBAで始める業務自動化プログラミング入門(5)(4/4 ページ)
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。今回は、セルの数値、フォント、文字位置、背景色、けい線など表示形式/書式設定の使い方に加え、書式の削除方法や形式を指定して貼り付けする方法も解説します【Windows 10、Excel 2016に対応】。
ClearFomatsメソッドで表の書式の一括削除
表に適用した書式を一括で削除してみよう。書式を削除するにはClearFomatsメソッドを使用するだけだ。マクロはリスト8のようになる。
Sub 表書式のクリア() Range("B3", Range("B3").End(xlDown).End(xlToRight)).ClearFormats End Sub
前回の「Endプロパティで、あるセルを基準に末端まで選択」を参考に、「B3セル」の終端行(xlDown)、終端列(xlToRight)を選択し、ClearFormatsメソッドで全書式を削除する。図は省略する。
PasteSpecialメソッドで形式を選択して貼り付け
次にExcelメニューの[貼り付け]→[形式を選択して貼り付け]のマクロを記述してみよう。図11を見ると分かるように、[形式を選択して貼り付け]には「全て」「数式」「値」「書式」などといった形式で貼り付けることが可能だ。
PasteSpecialメソッドの使い方
「形式を選択して貼り付け」にはPasteSpecialメソッドを使用する。書式は下記の通りだ。
PasteSpecialメソッドの書式
Rangeオブジェクト.PasteSpecial({Paste},{Operation},{SkipBlanks},{Transpose})
Pasteには表8の値のいずれかを指定する。Operationには表9の値のいずれかを指定する。
SkipBlanksには、空白セルを無視するかどうかをTrueとFalseで指定する。Trueの場合は、空白は無視、Falseか省略した場合は空白も貼り付けられる。
Transposeには、行列の入れ替えをTrueかFalseで指定する。Trueの場合は、行列が入れ替わって貼り付けられる。Falseか省略した場合は、行列の入れ替えは行われない。
定数 | 内容 |
---|---|
xlPasteAll | 全て(規定値) |
xlPasteFormulas | 数式 |
xlPasteValues | 値 |
xlPasteFormats | 書式 |
xlPasteComments | コメント |
xlPasteValidation | 入力規則 |
xlPasteAllExceptBorders | けい線を除く全て |
xlPasteColumnWidths | 列幅 |
xlPasteFormulasAndNumberFormats | 数式と数値の書式 |
xlPasteValuesAndNumberFormats | 値と数式の書式 |
参考「XlPasteType 列挙型 (Microsoft.Office.Interop.Excel) - MSDN」 |
定数 | 演算 |
---|---|
xlPasteSpecialOperationNone | しない(規定値) |
xlPasteSpecialOperationAdd | 加算 |
xlPasteSpecialOperationSubtract | 減算 |
xlPasteSpecialOperationMultiply | 乗算 |
xlPasteSpecialOperationDivide | 除算 |
参考「XlPasteSpecialOperation 列挙型 (Microsoft.Office.Interop.Excel) - MSDN」 |
セルにデータを貼り付ける場合は、計算式も一緒に貼り付ける必要があったり、逆に値だけが欲しい場合があったりと、いろいろな条件でデータを貼り付けたい場合がある。
この「形式を選択して貼り付け」をマクロ化しておくと、いちいち手数を踏んで、メニューから操作する必要がなくなる。ボタンを配置してボタンにマクロを登録すると、ボタンクリックのみで希望したデータが貼り付けられる。大変、効率的だ。
形式を選択して貼り付けるマクロの例
では、図12の表を書式(xlPasteFormats)のみを指定して、E3のセルにコピーしてみよう。C8のセルにはSum関数の計算式が入っている。
マクロはリスト9のようになる。B3〜C8のセルの内容をコピーし、E3のセルに書式だけを貼り付けている。
Option Explicit Sub 書式の貼り付け() Range("B3:C8").Copy Range("E3").PasteSpecial xlPasteFormats Application.CutCopyMode = False End Sub
「Application.CutCopyMode = False」でコピーモードをオフにしている。この記述はなくてもいいが、書いていない場合は、B3〜C8のセルの範囲が点線で点滅したままの状態になる。この点滅を解除するために、この一文を追加している。
結果は図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
実行すると図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年に薬師寺聖と結成したコラボレーション・ユニット
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Excelマクロ/VBAリファレンス用途別・キーワード別一覧超まとめ
- ピボットテーブルとは何か──「そもそも、何をする機能か」を理解する
Excelを通じて「ピボットテーブル」の基礎を学び、データ分析を実践するまでを習得する本連載。初回はピボットテーブルの基礎と、「どんなことができるのか」を解説する。 - どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。初回はデータベースの基本を理解し、Accessを使い始めてみよう。