8.Excelの操作マクロ


8-1 ワークシートの操作

(1)ワークシートに名前をつける

プログラム例8-1:Nameを用いることで,ワークシートの名の設定や取得ができる.ここでは,2番目のワークシートの名を「グラフ」に変更するプログラムを作成する.

(2)ワークシートを移動する

プログラム例8-2:Moveを用いることで,ワークシートを移動することができる.ここでは,1番目のワークシートを2番目のワークシートの後ろに移動するプログラムを作成する.

(3)ワークシートを追加する

プログラム例8-3:Addを用いることで,ワークシートを追加することができる.ここでは,2番目のワークシートの前に追加するプログラムを作成する.

(4)ワークシートをコピーする

プログラム例8-4:Copyを用いることでワークシートをコピーすることができる.ここでは,2番目のワークシートを2番目のワークシートの前にコピーするプログラムを作成する.

(5)ワークシートを削除する

プログラム例8-5:Deleteを用いることで,ワークシートを削除することができる.ここでは,2番目のワークシートを削除するプログラムを作成する.

(6)アクティブなワークシートの指定

プログラム例8-6:ワークシートを選択する場合,Activateを利用する.ここでは,2番目のワークシート"Sheet2"を選択し,そのシート上のセルA1に123と表示するプログラムを作成する.

プログラム例8-6において,単純に
Range("A1").value = 123
としても,"Sheet2"のセルA1に123は表示されない.現在選択されたワークシートに表示するためには,プログラム例8-6のように,Rangeの前にActiveSheet.を付けることで,選択されたワークシートに表示される.これは,図8-1に示すように,マクロが"Sheet1"に対して設定されているためである.
     図8-1
 特定のワークシート,例えば,"Sheet2"に表示したい場合は以下のようにワークシートを指定すればよい.
Worksheets("Sheet2").Range("A1").value = 123
 もし複数の命令をまとめて処理したい場合は, With~End Withの構文を利用するとよい.

プログラム例8-7:ワークシート"Sheet2"のセルA1に123,B1にabcを表示するプログラムを作成する.

8-2 ウィンドウの操作

(1)枠線の表示・非表示
 Excelのシートは通常,図8-2(a)のように枠線が表示されている.DisplayGridlinesを用いることで,これを図8-2(b)のように表示しないようにすることができる.
  (a) 枠線あり       (b) 枠線無し
          図8-2

プログラム例8-8:ActiveWindow.DisplayGridlinesの値をFalseとして,枠線を表示しないようにするプログラムを作成する.

(2)行列番号の表示・非表示
 ActiveWindow.DisplayHeadingsを用いることで,行の番号と列の英字を表示しないようにすることができる.

プログラム例8-9:ActiveWindow.DisplayHeadingsの値をFalseとして,行番号を表示しないようにするプログラムを作成する.

(3)スクロールバーの表示・非表示
 下記の命令を用いることで,水平および垂直方向のスクロールバーの表示・非表示をコントロールすることができる.これらの値をFalseとすれば非表示,Trueとすれば表示することができる.
(水平バー)ActiveWindow.DisplayHorizontalScrollBar
(垂直バー)ActiveWindow.DisplayVerticalScrollBar
(4)数式・ステータス・タスクバーの表示・非表示
 上記以外にも,下記の命令を用いて様々なバーを表示したり,非表示にすることができる.これらの値をFalseとすれば非表示,Trueとすれば表示することができる.
(数式バー)    Application.DisplayFormulaBar
(ステータスバー) Application.DisplayStatusBar
(タスクバー)   Application.ShowWindowsInTaskbar

8-3 セルの操作

(1)セルの挿入と削除
 Insert Shift:=でセルの挿入を,Delete Shift:=でセルの削除を行うことができる.

プログラム例8-10:セルA2とB2を挿入し,旧セルの値を右にシフトさせるプログラムを作成する.

プログラム例8-10は挿入の例であるが,削除の場合は,Insert Shift:=のかわりにDelete Shift:=を用いる.このとき,値をxlShiftToLeftとすることで左方向にシフト,xlShifToUpで上方向にシフトさせることができる.
(2)セルの結合・解除除
 MergeCellsを用いることで,セルの結合,解除をすることができる.

プログラム例8-11:セルA2~C2を結合するプログラムを作成する.

(3)行の高さと列の幅の設定
 Rangeに対するRowHeightやColumnWidthを指定することで,行の高さや列の幅を指定することができる.

プログラム例8-12:セルB2の高さを20ポイントに,列の幅を標準フォントの30文字分に設定するプログラムを作成する.

 このように,セルB2のサイズだけが変更になるのではなく,高さを変更した場合には,該当行全てのセルの高さが変更され,また,列の幅を変更した場合は,該当列全てのセル幅が変更される.なお,各行の最大の行の高さは 409 ポイント (1 ポイントは約 0.35 mm) ,各セルの最大の列の幅は 255 文字である.この値は,標準フォント(標準フォント : ワークシートの文字に標準で設定されるフォント)の書式が適用されたセルに表示できる文字数を表す.
 なお,Rangeの代わりにCellsを用いて指定することもできる.行と列を指定せず,単純にCellsとした場合は,すべてのセルに対して適用される.
(4)セルの罫線の描画
 Rangeに対してBorders()を指定することで,罫線を設定することができる.( )内には表8-1の値を設定することができる.
表8-1 罫線の位置
設 定内 容
xlEdgeTop 上側
xlEdgeBottom 下側
xlEdgeLeft 左側
xlEdgeRight 右側
xlInsideHorizontal内側の縦線
xlInsideVertical 内側の横線
xlDiagonalUp 右上がりの斜線包含
xlDiagonalDown 右下がりの斜線包含
 また,下記の値を指定することで,先の書式を指定することができる.

プログラム例8-13:A列~C列の2行目の上側の枠線を波線,中太,青色の罫線で引くプログラムを作成する.

プログラム例8-14:BordersAroundを用いてセル範囲の周辺に罫線を引くプログラムを作成する.

(5)セル内のフォントの書式の設定
 セル内の文字に対する書式指定のためにFontが用いられる.以下代表的な書式の例を示す.
Font.Name フォント名を設定
Font.Size フォントサイズを設定
Font.FontStyle フォントスタイルを設定
Font.Superscript上付き文字を設定(True:設定 False:設定しない)
Font.Subscript 下付き文字を設定(True:設定 False:設定しない)

プログラム例8-15:セルA1とB1の文字に対する書式として,MSゴシック,14ポイント,太字,青色の設定を行うプログラムを作成する.