マクロ で
Excel 業務 を 80 % 削減する
構文一覧
構文一覧 目次
オブジェクト・プロパティ・メソッド ... 1
●マクロの作成 ... 1
マクロ(プロシージャー)を作成する <第 1 単位 P.25> ... 1
●ブックの操作 ... 1
ワークブックを指定する <第 1 単位 P.65> ... 1
●ワークシートの操作 ... 1
ワークシートを指定する <第 1 単位 P.66> ... 1
ワークシートを追加する <第 2 単位 P.21> ... 1
ワークシート名を変更する <第 2 単位 P.22> ... 1
ワークシートを削除する <第 2 単位 P.21,第 2 単位 P.25> ... 2
シート数を調べる <第 2 単位 P.32> ... 2
●セルの操作 ... 2
セル範囲を選択する <第 1 単位 P.55> ... 2
セルのフォントサイズを変更する <第 1 単位 P.108> ... 2
フォントを太字にする <第 1 単位 P.59> ... 2
セルに文字列を入力する <第 1 単位 P.115> ... 2
セルの背景色を設定する <第 1 単位 P.58> ... 3
セルをクリアする <第 1 単位 P.118> ... 3
別シートのセルにデータを入力する <第 1 単位 P.116> ... 3
基準となるセルの上下左右のセルを指定する <第 2 単位 P.43> ... 3
Cells プロパティでセルの指定をする <第 2 単位 P.22> ... 3
アクティブセル領域を選択する <第 1 単位 P.82> ... 3
終端セル <第 1 単位 P.83> ... 4
基点のセルから終端セルまでを選択する <第 1 単位 P.83> ... 4
セルの表示書式を設定する <第 2 単位 P.129> ... 4
オートフィルを実行する <第 2 単位 P.130> ... 4
●行・列の操作 ... 4
列の選択 <第 1 単位 P.84> ... 4
行の選択 <第 1 単位 P.84> ... 5
セル範囲の行数を取得する <第 2 単位 P.71> ... 5
セル範囲の列数を取得する <第 2 単位 P.71> ... 5
セルの列番号を取得する <第 2 単位 P.74> ... 5
セルの行番号を取得する <第 2 単位 P.74> ... 5
●罫線の操作 ... 5
罫線を引く <第 1 単位 P.80> ... 5
罫線を消す <第 1 単位 P.80> ... 5
格子の罫線を引く <第 1 単位 P.80> ... 5
●データの抽出操作(AutoFilter) ... 6
データの抽出 <第 1 単位 P.95> ... 6
●ハイパーリンクの操作 ... 6
ハイパーリンクを挿入する <第 2 単位 P.30> ... 6
ハイパーリンクの削除 <第 2 単位 P.30> ... 6
ハイパーリンクの表示文字列を取り出す <第 2 単位 P.43> ... 6
ハイパーリンクのアドレスを取り出す <第 2 単位 P.44> ... 6
●テーブルの操作 ... 7
テーブルの行数を調べる <第 2 単位 P.147> ... 7
テーブルの列数を調べる <第 2 単位 P.147> ... 7
テーブルの 1 行 1 列めの要素を指定する <第 2 単位 P.147> ... 7
テーブルの最終行に 1 行追加する <第 2 単位 P.154> ... 7
ピボットテーブルを更新する <第 2 単位 P.157> ... 7
●図形の操作 ... 7
図形を指定する <第 2 単位 P.52> ... 7
図形の種類を確認する <第 2 単位 P.55> ... 8
図形を削除する <第 2 単位 P.57> ... 8
グラフを作成する <第 2 単位 P.111> ... 8
図形(グラフ)の位置を指定する <第 2 単位 P.112,第 2 単位 P.117> ... 9
図形(グラフ)の大きさを指定する <第 2 単位 P.112,第 2 単位 P.117> ... 9
グラフのデータ範囲を指定する <第 2 単位 P.113,第 2 単位 P.118> ... 9
グラフタイトルを設定する <第 2 単位 P.113,第 2 単位 P.118> ... 9
凡例を表示する・非表示にする <第 2 単位 P.113,第 2 単位 P.119> ... 10
系列のデータラベルを表示する <第 2 単位 P.113,第 2 単位 P.119> ... 10
●印刷の操作 ... 10
印刷する <第 1 単位 P.94> ... 10
●別のマクロの呼び出し ... 11
別のマクロを呼び出す <第 1 単位 P.97> ... 11
●ファイル操作 ... 11
ファイルダイアログボックスを表示する <第 2 単位 P.82> ... 11
ファイル名やフォルダー名を取得する <第 2 単位 P.84> ... 11
ブックを開く <第 2 単位 P.96> ... 12
ブックを閉じる <第 2 単位 P.96> ... 12
PDF 形式で保存(エクスポート)する <第 2 単位 P.97> ... 12
実行中のマクロを含む Excel ファイルのパスを取得する <第 2 単位 P.99> ... 13
制御構文 ... 13
●条件分岐 ... 13
1 分岐 <第 1 単位 P.130 , 第 2 単位 P.53> ... 13
2 分岐 <第 1 単位 P.130> ... 13
3 分岐以上 <第 1 単位 P.130 , 第 2 単位 P.67> ... 13
●ループ(繰り返し) ... 14
回数を指定してループする For ~ Next <第 1 単位 P.132 , 第 2 単位 P.20> ... 14
条件が満たされている間ループする Do While~Loop <第 1 単位 P.133 第 2 単位 P.85> ... 14
コレクション内の各要素を順番にループする For Each~Next <第 1 単位 P.134,第 2 単位 P.54> .... 14
変数と演算子 ... 15
●変数 ... 15
変数を宣言する <第 1 単位 P.121,第 2 単位 P.12> ... 15
変数に値を代入する <第 1 単位 P.122,第 2 単位 P.12> ... 15
変数にオブジェクトを代入する <第 1 単位 P.122,第 2 単位 P.69> ... 16
●演算子 ... 16
四則演算 <第 1 単位 P.124> ... 16
文字列を連結する &演算子 <第 1 単位 P.125,第 2 単位 P.34> ... 16
VBA関数 ... 16
●文字列操作 ... 16
スペース(全角/半角)を削除する <第 2 単位 P.65,第 2 単位 P.72> ... 16
指定した文字列を定数で指定した方法で変換する <第 2 単位 P.65,第 2 単位 P.74> ... 17
文字列の一部を置換する <第 2 単位 P.66,第 2 単位 P.74> ... 17
指定した文字列の文字数を返す <第 2 単位 P.66,第 2 単位 P.75> ... 17
文字列の左端から指定した文字数分の文字列を返す <第 2 単位 P.66,第 2 単位 P.75> ... 17
文字列の右端から指定した文字数分の文字列を返す <第 2 単位 P.66,第 2 単位 P.75> ... 17
文字列の指定したスタート位置から指定した文字数分の文字列を返す <第 2 単位 P.66,第 2 単位 P.75> ... 17
●日付操作 ... 17
指定された 2 つの日付の差を計算する <第 2 単位 P.130> ... 17
指定した日付の曜日を調べる <第 2 単位 P.131> ... 18
指定した日付から「年」を取り出す <第 2 単位 P.131> ... 18
指定した日付から「月」を取り出す <第 2 単位 P.131> ... 18
指定した日付から「日」を取り出す <第 2 単位 P.132> ... 18
指定した日付に数字(単位)を加えた日付を調べる <第 2 単位 P.132> ... 18
その他 ... 18
●デバッグ ... 18
イミディエイトウィンドウに表示する <第 2 単位 P.101> ... 18
●アプリケーション ... 19
画面の更新を止める <第 2 単位 P.158> ... 19
画面の更新を再開する <第 2 単位 P.158> ... 19
オブジェクト・プロパティ・メソッド
●マクロの作成
マクロ(プロシージャー)を作成する <第 1 単位 P.25>
Sub マクロ名()
(VBA のコード)
End Sub
●ブックの操作
ワークブックを指定する <第 1 単位 P.65>
ActiveWorkbook 現在操作中のブック Workbooks("Book.xlsx") ワークブック「Book.xlsx」
※ブック名をダブルクォーテーションで囲んで指定します。
●ワークシートの操作
ワークシートを指定する <第 1 単位 P.66>
ActiveSheet
現在操作中のシートを指定する
Worksheets("名簿") / Sheets("名簿") ワークシート「名簿」
※シート名をダブルクォーテーションで囲んで指定します。
Worksheets(1) / Sheets(1) 左から 1 番めのシート
ワークシートを追加する <第 2 単位 P.21>
Sheets.Add After:=ActiveSheet / WorkSheets.Add After:=ActiveSheet 現在アクティブなシートの後にシートを追加する
ワークシート名を変更する <第 2 単位 P.22>
Sheets("Sheet2").Name = "塚本裕行"
「Sheet2」シートのシート名を「塚本裕行」に変更する Sheets(2).Name = "塚本裕行"
2 番めのシートの名前を「塚本裕行」に変更する
ワークシートを削除する <第 2 単位 P.21,第 2 単位 P.25>
Application.DisplayAlerts = False Sheets("塚本裕行").Delete
Application.DisplayAlerts = True
シートを削除する際、確認のダイアログボックスを表示せずに、シート「塚本裕行」を削除する Application.DisplayAlerts = False
Sheets(2).Delete
Application.DisplayAlerts = True
シートを削除する際、確認のダイアログボックスを表示せずに、2 番めのシートを削除する
シート数を調べる <第 2 単位 P.32>
Msgbox Sheets.Count
Msgbox にシートの数を表示する
※Sheets コレクションの代わりに、Worksheets コレクションを使用することができます。
●セルの操作
セル範囲を選択する <第 1 単位 P.55>
Range("A2").Select セル「A2」を選択する Range("A2:E2").Select セル範囲「A2:E2」を選択する Range("A2:E2,D4:E8,G5").Select
セル範囲「A2:E2」、セル範囲「D4:E8」、セル「G5」を選択する
セルのフォントサイズを変更する <第 1 単位 P.108>
Range("A1:D1").Font.Size = 20
セル「A1:D1」のフォントサイズを 20 ポイントに変更する
フォントを太字にする <第 1 単位 P.59>
Selection.Font.Bold = True
選択中のセルのフォントを太字にする Range("A2:E2").Font.Bold = True
セル範囲「A2:E2」のフォントを太字にする Range("A2:E2").Font.Bold = False
セル範囲「A2:E2」のフォントの太字の設定を解除する
セルに文字列を入力する <第 1 単位 P.115>
Range("A1").Value = "マクロ"
セル「A1」に文字列「マクロ」を入力する
※文字列を入力する場合は文字列をダブルクォーテーションで囲みます。
Range("B1").Value = 1200
セル「B1」に数値「1200」を入力する
※数値を入力する場合はダブルクォーテーションを省略できます。
Range("C1").Value = "2019/5/15"
セル「C1」に日付「2019/5/15」を入力する
※日付を入力する場合は日付をダブルクォーテーションで囲みます。
セルの背景色を設定する <第 1 単位 P.58>
Selection.Interior.Color = 255
選択中のセルの背景色を赤(色番号「255」)に設定する Range("A2:E2").Interior.Color = 10498160
セル範囲「A2:E2」の背景色を紫(色番号「10498160」)に設定する
セルをクリアする <第 1 単位 P.118>
Range("A1:C5").Clear セル「A1:C5」をクリアする
別シートのセルにデータを入力する <第 1 単位 P.116>
Worksheets("Sheet2").Range("A1").Value = "はじめての VBA"
シート「Sheet2」のセル「A1」に「はじめての VBA」と入力する
基準となるセルの上下左右のセルを指定する <第 2 単位 P.43>
基準となるセル.Offset(上下方向の数値(行), 左右方向の数値(列))
Range("A1").Offset(2,1).Select
基準となるセル「A1」から下方向に 2、右方向に 1 ずれたセルを選択する
※Offset で負の数を指定した場合は、指定した数だけ上方向や左方向にずれます。
Cells プロパティでセルの指定をする <第 2 単位 P.22>
Cells(行番号, 列番号).Select セルを選択する
Cells(1,2).Select
1 行め、2 列め(B 列)のセル「B1」を選択する Cells(1,"A").Select
1 行めの A 列のセル「A1」を選択する
アクティブセル領域を選択する <第 1 単位 P.82>
Selection.CurrentRegion.Select
現在選択中のセルを基点としたアクティブセル領域を選択する Range("A1").CurrentRegion.Select
セル「A1」を基点としたアクティブセル領域を選択する
終端セル <第 1 単位 P.83>
Range("A1").End(xlToRight)
セル「A1」から右方向に移動した終端セル Range("A1").End(xlDown)
セル「A1」から下方向に移動した終端セル
基点のセルから終端セルまでを選択する <第 1 単位 P.83>
Range(Range("A1"),Range("A1").End(xlToRight)).Select セル「A1」から右方向の終端セルまでを選択する
Range(Range("A2"),Range("A2").End(xlDown)).Select セル「A2」から下方向の終端セルまでを選択する
セルの表示書式を設定する <第 2 単位 P.129>
Range オブジェクト.NumberFormatLocal = "書式の式"
Range オブジェクトの表示形式を「書式の式」で指定した形式に変更する Range("A1").NumberFormatLocal = "m""月""d""日""(aaa)"
セル「A1」の表示形式を「4 月 1 日(月)」の形式に変更する
オートフィルを実行する <第 2 単位 P.130>
Range オブジェクト. AutoFill Destination:= オートフィル先のセル範囲 Range オブジェクトの値を Destination で指定したセル範囲に連続入力する
※引数「Destination」でセル範囲を指定する際には、もとのセルを含む形で設定します。
Range("B8").AutoFill Destination:=Range("B8:B10")
セル「B8」の値をセル範囲「B8:B10」にオートフィルで連続入力する
●行・列の操作
列の選択 <第 1 単位 P.84>
Columns("A").Select A 列を選択する Columns(1).Select 1 列め(A 列)を選択する Columns("A:C").Select A 列から C 列を選択する
Range(Columns(1),Columns(3)).Select 1 列め(A 列)から 3 列め(C 列)を選択する Range("A1:C1").EntireColumn.Select
1 列め(A 列)から 3 列め(C 列)を選択する
※「EntireColumn」キーワードを使うと、選択範囲内の列を簡単に指定することができます。
行の選択 <第 1 単位 P.84>
Rows(1).Select 1 行めを選択する Rows("1:3").Select
1 行めから 3 行めを選択する Range(Rows(1),Rows(3)).Select 1 行めから 3 行めを選択する Range("A1:A3").EntireRow.Select 1 行めから 3 行めを選択する
※「EntireRow」キーワードを使うと、選択範囲内の行を簡単に指定することができます。
セル範囲の行数を取得する <第 2 単位 P.71>
セル範囲.Rows.Count セル範囲の行数を求める
セル範囲の列数を取得する <第 2 単位 P.71>
セル範囲.Columns.Count セル範囲の列数を求める
セルの列番号を取得する <第 2 単位 P.74>
セル範囲.Column セルの列番号を求める
セルの行番号を取得する <第 2 単位 P.74>
セル範囲.Row
セルの行番号を求める
●罫線の操作
罫線を引く <第 1 単位 P.80>
Selection.Borders(xlEdgeTop).LineStyle = xlContinuous 選択範囲の上辺に罫線を引く
罫線を消す <第 1 単位 P.80>
Selection.Borders(xlDiagonalDown).LineStyle = xlNone 選択範囲の右下がり斜め線を消す
格子の罫線を引く <第 1 単位 P.80>
Range("A1:C5").Borders.LineStyle = xlContinuous セル範囲「A1:C5」に格子の罫線を引く
●データの抽出操作(AutoFilter)
データの抽出 <第 1 単位 P.95>
ActiveSheet.Range("$A$5:$J$34").AutoFilter Field:=4, Criteria1:="ゴールド"
4 列めが「ゴールド」のデータを抽出する
ActiveSheet.Range("$A$5:$J$34").AutoFilter Field:=7, Criteria1:=">=50"
7 列めが「50 以上」のデータを抽出する
※抽出対象の列が数値データの場合は、等号、不等号記号を使ってデータの抽出ができます。
●ハイパーリンクの操作
ハイパーリンクを挿入する <第 2 単位 P.30>
ActiveSheet.Hyperlinks.Add Anchor:=Range("A1"), _ Address:=" ", _
SubAddress:="全国!A1", _ TextToDisplay:="全国"
アクティブシートのセル「A1」に「全国」シートのセル「A1」へのリンクを「全国」という文字列で挿入する ActiveSheet.Hyperlinks.Add Anchor:=Range("A1"), _
Address:=" https://www.yahoo.co.jp/", _ TextToDisplay:="ヤフー"
アクティブシートのセル「A1」に www.yahoo.co.jp へのリンクを「ヤフー」という文字列で挿入する
ハイパーリンクの削除 <第 2 単位 P.30>
ActiveSheet.Hyperlinks.Delete
アクティブシート内のすべてのハイパーリンクを削除する Range("A2").Hyperlinks.Delete
セル「A2」に設定されているハイパーリンクを削除する
※文字も含めてすべての内容を削除する場合は、「Range("A2").Delete」とします。
ハイパーリンクの表示文字列を取り出す <第 2 単位 P.43>
Range("B2").Value = Range("A2").Hyperlinks(1).TextToDisplay セル「B2」に、セル「A2」のハイパーリンクの表示文字列を入力する
ハイパーリンクのアドレスを取り出す <第 2 単位 P.44>
Range("B2").Value = Range("A2").Hyperlinks(1).Address
セル「B2」に、セル「A2」のハイパーリンクのアドレスを入力する
●テーブルの操作
テーブルの行数を調べる <第 2 単位 P.147>
ListObject オブジェクト.ListRows.Count テーブルの行数を取得する
Msgbox ActiveSheet.ListObjects("集計表").ListRows.Count
アクティブシートの「集計表」テーブルの行数をメッセージボックスで表示する
テーブルの列数を調べる <第 2 単位 P.147>
ListObject オブジェクト.ListColumns.Count テーブルの列数を取得する
Msgbox ActiveSheet.ListObjects(1).ListColumns.Count
アクティブシートの 1 番めのテーブルの列数をメッセージボックスで表示する
テーブルの 1 行 1 列めの要素を指定する <第 2 単位 P.147>
ListObject オブジェクト.ListRows(1).Range (1) テーブルの 1 行 1 列めの要素を取得する
Msgbox ActiveSheet.ListObjects("集計表").ListRows(1).Range(1).Value
アクティブシートの「集計表」テーブルの 1 行 1 列めの値をメッセージボックスで表示する
テーブルの最終行に 1 行追加する <第 2 単位 P.154>
ListObject オブジェクト.ListRows.Add テーブルの最終行に 1 行追加する
Set myListRow = tbShukei.ListRows.Add
変数「tbShukei」に代入したテーブルの最終行に 1 行追加し、追加した ListRow オブジェクトを変数「myListRow」
に代入する
ピボットテーブルを更新する <第 2 単位 P.157>
ワークシートオブジェクト.PivotTables(インデックス番号).PibotCache.Refresh ワークシート内の指定したインデックス番号のピボットテーブルを更新する ActiveSheet.PivotTables(1).PivotCache.Refresh
アクティブシートの 1 番めのピボットテーブルを更新する
●図形の操作
図形を指定する <第 2 単位 P.52>
ワークシートオブジェクト.Shapes(インデックス番号).Select ワークシート内の指定したインデックス番号の図形を選択する ActiveSheet.Shapes(1).Select
アクティブシートの 1 番めの図形(1 番めに作成された図形)を選択する
※Shapes コレクションに含まれる単体の Shape オブジェクトを指定するには、「Shapes(インデックス番号)」を 使用します。インデックス番号は図形を作成した順番につけられています。
図形の種類を確認する <第 2 単位 P.55>
Shape オブジェクト.Type 図形の種類をあらわす値を返す MsgBox ActiveSheet.Shapes(1).Type
アクティブシートの 1 番めの図形の種類をメッセージボックスで表示する
定数 値 図形の種類
msoAutoShape 1 図形・オートシェイプ・ワードアート
msoCallout 2 吹き出し
msoChart 3 グラフ
msoComment 4 コメント
msoPicture 13 画像
msoTextBox 17 テキストボックス
msoSmartArt 24 スマートアート
図形を削除する <第 2 単位 P.57>
ワークシートオブジェクト.Shapes(インデックス番号).Delete ワークシート内の指定したインデックス番号の図形を削除する ActiveSheet.Shapes(1).Delete
アクティブシートの 1 番めの図形を削除する
グラフを作成する <第 2 単位 P.111>
ActiveSheet.Shapes.AddChart2(XlChartType:=グラフの種類を示す定数) アクティブシートにグラフ(指定したグラフ)を追加する
※Excel2010 では、上記の「AddChart2」の部分を「AddChart」にして使用してください。
Dim myShape as Shape
Set myShape = ActiveSheet.Shapes.AddChart2(XlChartType:=xlPie)
アクティブシートに円グラフを追加し、追加したグラフを変数「myShape」に代入する
グラフの種類 定数 グラフの種類 定数
集合縦棒 xlColumnClustered 3-D 円 xl3Dpie
積み上げ縦棒 xlColumnStacked 散布図 xlXYScatter
集合横棒 xlBarClustered 面 xlArea
3-D 積み上げ横棒 xlBarStacked 積み上げ面 xlAreaStacked
折れ線 xlLine ドーナツ xlDoughnut
データマーカー付き折れ線 xlLineMarkers レーダー xlRadar
円 xlPie
図形(グラフ)の位置を指定する <第 2 単位 P.112,第 2 単位 P.117>
Shape オブジェクト.Left = Range オブジェクト.Left 図形の左位置を、指定したセルの左位置に合わせる MyShape.Left = ActiveSheet.Range("B8:F8").Left
変数「myShape」に代入した図形(グラフ)の左位置を、セル範囲「B8:F8」の左位置に合わせる
Shape オブジェクト.Top = Range オブジェクト.Top 図形の上位置を、指定したセルの上位置に合わせる MyShape.Top = ActiveSheet.Range("B8:F8").Top
変数「myShape」に代入した図形(グラフ)の上位置を、セル範囲「B8:F8」の上位置に合わせる
図形(グラフ)の大きさを指定する <第 2 単位 P.112,第 2 単位 P.117>
Shape オブジェクト.Width = Range オブジェクト.Width 図形の幅を指定したセルの幅に合わせる
MyShape.Width = ActiveSheet.Range("B8:F8").Width
変数「myShape」に代入した図形(グラフ)の幅を、セル範囲「B8:F8」の幅に合わせる
Shape オブジェクト.Height = Range オブジェクト.Height 図形の高さを指定したセルの高さに合わせる
MyShape.Height = ActiveSheet.Range("B8:F8").Height
変数「myShape」に代入した図形(グラフ)の高さを、セル範囲「B8:F8」の高さに合わせる
グラフのデータ範囲を指定する <第 2 単位 P.113,第 2 単位 P.118>
Chart オブジェクト.SetSourceData Source:=Range オブジェクト グラフのデータ範囲を指定する
MyShape.Chart.SetSourceData Source:=ActiveSheet.Range("C5:F6")
変数「myShape」に代入したグラフのデータ範囲にセル範囲「C5:F6」を指定する
グラフタイトルを設定する <第 2 単位 P.113,第 2 単位 P.118>
Chart オブジェクト.HasTitle = True グラフタイトルを表示する
myShape.Chart.HasTitle = True
変数「myShape」に代入したグラフのグラフタイトルを表示する
※Excel2016 と Excel2013 では、グラフタイトルが標準で表示される設定になっていますので、「Chart オブジェ クト.HasTitle = True」を省略できます。
Chart オブジェクト.ChartTitle.Text = " グラフのタイトル"
グラフタイトルを「グラフのタイトル」に設定する myShape.Chart.ChartTitle.Text = "男女計"
変数「myShape」に代入したグラフのグラフタイトルを「男女計」に設定する
Chart オブジェクト.HasTitle = False グラフタイトルを非表示にする
myShape.Chart.HasTitle = False
変数「myShape」に代入したグラフのグラフタイトルを非表示にする
凡例を表示する・非表示にする <第 2 単位 P.113,第 2 単位 P.119>
Chart オブジェクト.HasLegend = True 凡例を表示する
myShape.Chart.HasLegend = True
変数「myShape」に代入したグラフの凡例を表示する
Chart オブジェクト.HasLegend = False 凡例を非表示にする
myShape.Chart.HasLegend = False
変数「myShape」に代入したグラフの凡例を非表示にする
系列のデータラベルを表示する <第 2 単位 P.113,第 2 単位 P.119>
Chart オブジェクト.SeriesCollection(1).HasDataLabels = True 系列 1 のデータラベルを表示する
※SeriesCollection のインデックス番号で系列番号を指定することができます。
myShape.Chart.SeriesCollection(1).HasDataLabels = True
変数「myShape」に代入したグラフの系列 1 のデータラベルを表示する
Chart オブジェクト.SeriesCollection(1).HasDataLabels = False 系列 1 のデータラベルを非表示にする
myShape.Chart.SeriesCollection(1).HasDataLabels = False
変数「myShape」に代入したグラフの系列 1 のデータラベルを非表示にする
●印刷の操作
印刷する <第 1 単位 P.94>
ActiveWindow.SelectedSheets.PrintOut
アクティブウィンドウで選択されているすべてのシートを印刷する ActiveWorkbook.PrintOut
アクティブブックの全てのシートを印刷する ActiveWorkbook.PrintOut Preview:=True
アクティブブックの全てのシートを印刷プレビューする ActiveWorkbook.PrintOut Copies:=2
アクティブブックの全てのシートを 2 部ずつ印刷する ActiveSheet.PrintOut
アクティブシートを印刷する
Worksheets(1).PrintOut From:=2, To:=3
1番めのシートの 2 ページから 3 ページまでを印刷する Range("A5:J25").PrintOut
セル範囲「A5:J25」を印刷する
●別のマクロの呼び出し
別のマクロを呼び出す <第 1 単位 P.97>
Call マクロ名
別のマクロを呼び出して実行する
●ファイル操作
ファイルダイアログボックスを表示する <第 2 単位 P.82>
Application.FileDialog(ダイアログボックスのタイプを示す定数).Show 定数で指定したダイアログボックスを表示する
※親オブジェクトの「Application」は省略できません。
Application.FileDialog(msoFileDialogFolderPicker).Show [参照]ダイアログボックス(フォルダー選択)を表示する
ダイアログボックスのタイプを示す定数 説明
msoFileDialogOpen [ファイルを開く]ダイアログボックス
msoFileDialogSaveAs [名前を付けて保存]ダイアログボックス
msoFileDialogFilePicker [参照]ダイアログボックス(ファイルを選択)
msoFileDialogFolderPicker [参照]ダイアログボックス(フォルダーを選択)
Dim FD As FileDialog Dim FolderPath As String
Set FD = Application.FileDialog(msoFileDialogFolderPicker) If FD.Show = True Then
FolderPath = FD.SelectedItems(1) MsgBox FolderPath
End If
[参照]ダイアログボックス(フォルダーを選択)を表示し、選択したフォルダーのパスをメッセージボックス で表示する
ファイル名やフォルダー名を取得する <第 2 単位 P.84>
変数 = Dir(フォルダーのパス, 属性を示す定数)
指定したフォルダー内で該当する属性のファイル名を変数に代入する
※Dir 関数は戻り値としてファイル名を返すので、文字列型の変数で戻り値を受けるようにします。
定数 説明
vbNormal 属性のないファイル(初期値)
vbReadOnly 読み取り専用のファイル
vbHidden 隠しファイル
vbSystem システムファイル
vbDirectory フォルダー
myFile = Dir(C:¥Doc¥)
「C」ドライブの「Doc」フォルダー内にある最初のファイル名を変数「myFile」に代入する Dim myFile As String
myFile = Dir("C:¥Temp¥") Do While myFile <> ""
MsgBox myFile myFile = Dir() Loop
「C」ドライブの「Temp」フォルダー内にあるすべてのファイル名をメッセージボックスで表示する
ブックを開く <第 2 単位 P.96>
Workbooks.Open Filename:="ファイル名"
ブックを開く
※ファイル名はフルパスで指定します。
Workbooks.Open Filename:="C:¥Users¥jmam¥Documents¥Book1.xlsx"
ドキュメントフォルダーの「Book1」ブックを開く
※ドキュメントフォルダーのパスはご利用の環境に依存します。
ブックを閉じる <第 2 単位 P.96>
Workbook オブジェクト.Close ブックを閉じる
ActiveWorkbook.Close アクティブなブックを閉じる Workbooks("Book1").Close
「Book1」を閉じる
PDF 形式で保存(エクスポート)する <第 2 単位 P.97>
親オブジェクト.ExportAsFixedFormat Type:=xlTypePDF,Filename:="PDF ファイル名"
選択したオブジェクトを PDF 形式で保存(エクスポート)する
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\Jmam\Documents\PDF ファイル.pdf"
アクティブシートを PDF 形式で「ドキュメント」フォルダー内に「PDF ファイル」という名前で保存する
※ 親オブジェクトには、Workbook オブジェクト、Worksheet オブジェクト、Range オブジェクトが指定できます。
Workbook オブジェクトを親オブジェクトに指定すると、ブックに含まれるすべてのシートを PDF 形式で保存する ことができます。
実行中のマクロを含む Excel ファイルのパスを取得する <第 2 単位 P.99>
ThisWorkbook.Path
実行中のマクロを含む Excel ファイルのパスを取得する MsgBox ThisWorkbook.Path
実行中のマクロを含む Excel ファイルのパスをメッセージボックスで表示する
制御構文
●条件分岐
1 分岐 <第 1 単位 P.130 , 第 2 単位 P.53>
If(条件式)Then
<処理>
End If
条件式が真のときに、処理を実行する
2 分岐 <第 1 単位 P.130>
If(条件式)Then
<処理 1>
Else
<処理 2>
End If
条件式が真のときに、処理 1 を実行し、それ以外のときは処理 2 を実行する
3 分岐以上 <第 1 単位 P.130 , 第 2 単位 P.67>
If(条件式 1)Then
<処理 1>
ElseIF(条件式 2)Then
<処理 2>
Else
<処理 3>
End If
条件式 1 が真のときに、処理 1 を実行し、条件式 2 が真のときに、処理 2 を実行する。条件式 1 にも条件式 2 に も該当しない場合は処理 3 を実行する
※条件式 1 が真となって処理 1 が実行された後は、「End If」の行が実行されて、分岐処理が終了します。
●ループ(繰り返し)
回数を指定してループする For ~ Next <第 1 単位 P.132 , 第 2 単位 P.20>
For カウント変数 = 最初の値 To 最後の値 (繰り返す処理)
Next
カウント変数に最初の値から順番に値を代入し、最後の値が代入されるまで、処理を繰り返す Dim i As Long
For i = 1 To 10
(繰り返す処理)
Next
10 回処理を繰り返す Dim i As Long
For i = 1 To Sheets.Count
(繰り返す処理)
Next
シートの数だけ処理を繰り返す
条件が満たされている間ループする Do While~Loop <第 1 単位 P.133 第 2 単位 P.85>
Do While 条件式
(繰り返す処理)
Loop
条件が満たされている間、処理を繰り返す Dim i As Long
i = 1
Do While Cells(i,"A").Value <> ""
(繰り返す処理) i = i + 1 Loop
変数「i」に 1 を代入し、1 行め A 列が空白でない場合は、処理を行い、対象の行を 1 ずつ増やしながら A 列の値 を調べる。値が空白になるまで処理を繰り返す
コレクション内の各要素を順番にループする For Each~Next <第 1 単位 P.134,第 2 単位 P.54>
For Each 変数 In コレクション
(繰り返す処理)
Next
コレクション内の各要素の数だけ処理を繰り返す Dim r As Range
For Each r In Range("A1:A40") (繰り返す処理)
Next
Dim shp as Shape
For Each shp In ActiveSheet.Shapes
(繰り返す処理)
Next
アクティブシートの図形を 1 つずつ変数「shp」に代入して図形の数だけ処理を繰り返す
変数と演算子
●変数
変数を宣言する <第 1 単位 P.121,第 2 単位 P.12>
Dim 変数名 As データ型
データ型を指定して変数を宣言する Dim myNumber As Long
長整数型の変数「myNumber」を宣言する Dim tax_Rate As Double
倍精度浮動小数点数型の変数「tax_Rate」を宣言する Dim myCompany As String
文字列型の変数「myCompany」を宣言する Dim myDay As Date
日付型の変数「myDay」を宣言する Dim myRange As Object
オブジェクト型の変数「myRange」を宣言する Dim myRange As Range
Range 型(オブジェクト型)の変数「myRange」を宣言する Dim myWS As Worksheet
Worksheet 型(オブジェクト型)の変数「myWS」を宣言する
変数に値を代入する <第 1 単位 P.122,第 2 単位 P.12>
myCompany = "日本能率協会マネジメントセンター"
変数「myCompany」に「日本能率協会マネジメントセンター」を代入する myNumber = 1000
変数「myNumber」に 1000 を代入する
※変数に数値を代入する場合は、値を囲むダブルクォーテーションを省略できます。
myDay = "2018/10/10"
変数「myDay」に「2018 年 10 月 10 日」を代入する myTime = "8:30:30"
変数「myTime」に「8 時 30 分 30 秒」を代入する myDay = "2018/10/10 8:30:30"
変数「myDay」に「2018 年 10 月 10 日 8 時 30 分 30 秒」を代入する
変数にオブジェクトを代入する <第 1 単位 P.122,第 2 単位 P.69>
Set 変数名 = オブジェクト
オブジェクト型の変数にオブジェクトを代入する Set myRange = Range("A1")
変数「myRange」にセル「A1」を代入する
●演算子
四則演算 <第 1 単位 P.124>
Range("A1").Value = myNumber + 10
加算 変数「myNumber」に 10 を足した数をセル「A1」に入力する Range("A2").Value = myNumber – 10
減算 変数「myNumber」から 10 を引いた数をセル「A2」に入力する Range("A3").Value = myNumber * 10
乗算 変数「myNumber」に 10 を掛けた数をセル「A3」に入力する Range("A4").Value = myNumber / 10
除算 変数「myNumber」を 10 で割った数をセル「A4」に入力する Range("A5").Value = myNumber ^ 2
べき乗 変数「myNumber」を 2 乗した数をセル「A5」に入力する Range("A6").Value = myNumber ¥ 7
除算の商 変数「myNumber」を 7 で割った商をセル「A6」に入力する Range("A7").Value = myNumber Mod 7
除算の余り 変数「myNumber」を 7 で割った余りをセル「A7」に入力する
文字列を連結する &演算子 <第 1 単位 P.125,第 2 単位 P.34>
Msgbox "私の名前は" & "山田太郎" & "です。"
メッセージボックスで、「私の名前は山田太郎です。」と表示する Msgbox "2 番めのシートの名前は" & Sheets(2).Name & "です。"
メッセーボックスで、「2 番めのシートの名前は(シート名)です。」と表示する
VBA 関数
●文字列操作
スペース(全角/半角)を削除する <第 2 単位 P.65,第 2 単位 P.72>
Trim("文字列")
指定した文字列から、前後のスペースを削除する LTrim("文字列")
指定した文字列の前のスペースを削除する RTrim("文字列")
指定した文字列を定数で指定した方法で変換する <第 2 単位 P.65,第 2 単位 P.74>
StrConv("文字列",変換の種類を示す定数) StrConv("Excel",vbNarrow) ➡ Excel
※変換の種類を示す定数には以下の定数を指定します。
定数 説明
vbUpperCase 文字列を大文字に変換する vbLowerCase 文字列を小文字に変換する
vbProperCase 文字列の各単語の先頭の文字を大文字に変換する
vbWide 文字列内の半角文字を全角文字に変換する
vbNarrow 文字列内の全角文字を半角文字に変換する
vbKatakana 文字列内のひらがなをカタカナに変換する vbHiragana 文字列内のカタカナをひらがなに変換する
文字列の一部を置換する <第 2 単位 P.66,第 2 単位 P.74>
Replace("対象の文字列"," 検索する文字列"," 置換する文字列") Replace("Excel VBA","Excel","Word") ➡ Word VBA
指定した文字列の文字数を返す <第 2 単位 P.66,第 2 単位 P.75>
Len("文字列") Len("ABC") ➡ 3
Len("東京都港区赤坂 1-1-1") ➡ 12
文字列の左端から指定した文字数分の文字列を返す <第 2 単位 P.66,第 2 単位 P.75>
Left("文字列", 文字数) Left("ABCDEFG",3) ➡ ABC
文字列の右端から指定した文字数分の文字列を返す <第 2 単位 P.66,第 2 単位 P.75>
Right("文字列", 文字数) Right("ABCDEFG",3) ➡ EFG
文字列の指定したスタート位置から指定した文字数分の文字列を返す <第 2 単位 P.66,第 2 単位 P.75>
Mid("文字列", スタート位置, 文字数) Mid("ABCDEFG",3,3) ➡ CDE
●日付操作
指定された 2 つの日付の差を計算する <第 2 単位 P.130>
DateDiff(単位を示す定数, 日付 1, 日付 2) 日付 1 と日付 2 の差を計算する
※単位を示す定数には以下の定数を指定します。
定数 説明 定数 説明
yyy 年 m 月
ww 週 n 分
q 四半期 d 日
h 時 s 秒
指定した日付の曜日を調べる <第 2 単位 P.131>
Weekday (日付)
Weekday 関数は曜日を示す数字を返す
戻り値 説明
1 日曜日
2 月曜日
3 火曜日
4 水曜日
5 木曜日
6 金曜日
7 土曜日
指定した日付から「年」を取り出す <第 2 単位 P.131>
Year(日付)
指定した日付から「月」を取り出す <第 2 単位 P.131>
Month(日付)
指定した日付から「日」を取り出す <第 2 単位 P.132>
Day(日付)
指定した日付に数字(単位)を加えた日付を調べる <第 2 単位 P.132>
DateAdd( 単位を示す定数, 数字, 日付)
※単位を示す定数は、DateDiff 関数と同じ定数を使用します。正の数で未来の日付、負の数を指定すると過去の 日付を調べることができます。
その他
●デバッグ
イミディエイトウィンドウに表示する <第 2 単位 P.101>
Debug.Print 変数名
変数の値をイミディエイトウィンドウに表示する
●アプリケーション
画面の更新を止める <第 2 単位 P.158>
Application.ScreenUpdating = False 画面の更新を再開する <第 2 単位 P.158>
Application.ScreenUpdating = True