-
ブックとマクロの関係セル内に入力したデータや、ワークシート上で作成したグラフなどはブックとして保存されます。作成したマクロも同様に、ブック内に保存されます。マクロだけ独立して保存することはできません。
-
マクロのファイル保存マクロが含まれているブックを保存するときは「名前をつけて保存」ダイアログボックスの「ファイルの種類」で「Excelマクロ有効ブック(*.xlsm)」を選択します。「Excelブック(*.xlsx)」を選択すると、作成したマクロの内容は保存されず、ワークシート上のデータだけが保存されます。
-
マクロとセキュリティ標準では「警告を表示してすべてのマクロを無効にする」が設定されています。デジタル署名は、ブック内にマクロ作成者の情報などを電子的に保存する仕組みです。開発企業などが作成する有料のマクロなどで使用されることがあります。
-
マクロ記録マクロボタンは上部と下部に分かれています。上部をクリックすると、すでに作成してあるマクロを実行するためのダイアログボックスが表示されます。マクロ記録を開始するには、下部をクリックします。
-
マクロ記録「マクロの保存先」がExcelをインストールした初期状態では「作業中のブック」が選択されていますが、ユーザーが「マクロの保存先」を変更すると、次回から変更した項目が選択された状態になります。
-
記録したマクロを表示するマクロ記録で生成されたコードは、ブック内の標準モジュールに記録されます。標準モジュールを開くには、VBEの左上にある「プロジェクトエクストーラー」で「標準モジュール」をダブルクリックして開き、その下の「Module1」をダブルクリックします。
-
記録したマクロを表示するマクロ記録を行うと、自動的に新しい標準モジュールが挿入され、その挿入された標準モジュールにコードが記録されます。標準モジュールの名前は便宜的にModule1,Module2と付けられます。
-
マクロ記録のダイアログボックス マクロ名記録するマクロの名前を設定します。標準ではMacro1,Macro2のような便宜的な名前が設定されています。マクロの名前として指定できる文字にはルールがあります。 ①名前の先頭は、英文字、ひらがな、カタカナ、漢字でなければならない ②名前に空白や[?],[*]など無効な記号が含まれてはいけない"
-
ショートカットキー記録したマクロにショートカットキーを設定します。テキストボックスにmのような半角小文字を入力するとctrl+Mキーで記録したマクロを実行できるようになります。Mのように半角大文字を入力するとctrl+Shift+Mキーに割り当てられます。
-
マクロの保存先マクロの記録先ブックを設定します。選択できるのは個人用マクロブック、新しいブック、作業中のブックです
-
個人用マクロブック個人用マクロブックはExcelを起動すると自動的に読み込まれる非表示のブックです。自動的に開かれるため、Excelでどんなブックを開いているかによらず、すべてのブックに対して実行できる汎用的なマクロを書くのに適しています。
-
個人用マクロブック個人用マクロブックは「PERSONAL.XLSB」という名前のブックです。 エクスプローラーで個人用のマクロブックを表示するときは、エクスプローラーの設定で隠しファイルチェックボックスをオンにして、隠しファイルやフォルダが表示されるようにします。
-
モジュールモジュールにはいくつかの種類があります。オブジェクトモジュールは、シートやブックに紐づいたモジュールで、ユーザーがExcelの操作をしただけで自動的に実行される「自動実行マクロ(イベントマクロ)」を記述します。クラスモジュールは、クラスで定義するときに使います。フォームモジュールは、UserFormを使用するときに使うモジュールです。一般的なマクロは標準モジュールに記述します。
-
セルの表し方Range(""A1"") セルA1 Range(""A1:B3"") セル範囲A1:B3 Range(""A1,C5"") セルA1とセルC5"
-
ステートメントステートメントは、操作の対象(オブジェクト)に対して様子や状態を調べたり、あるいは何らかの動作をさせるのではなく、マクロ全体の中で何らかの動きをします。
-
変数変数の型は、その変数に入れることができる値を規制する仕組みです。整数型として宣言した「整数専用の変数」には整数しか入れることができず、そこに文字列を入れることはできません。
-
変数の宣言Dim 変数名 As 型
-
変数に代入する変数に入れる文字列や数値のことを値と呼びます。 また何らかの値を変数に入れることを代入などと表します。"
-
変数宣言の重要性「変数の宣言を強制する」の設定をオンにすると、それ以降に挿入されるモジュールの冒頭に「Option Explicit」が記述されたモジュール内では、どんなプロシージャであっても、変数は宣言しないと使用できず、宣言していない変数を使用すると、そこでマクロがエラーになります。
-
変数の名前変数名には文字(英数字、漢字、ひらがな、カタカナ)とアンダースコア(_)を使うことができます。スペースやほかの記号は使えません。変数名の先頭の文字は、英字、漢字、ひらがな、カタカナのいずれかでなければなりません。変数名の長さは半角で255文字以内でなければなりません。また、同一適用範囲(スコープ)内で同じ変数名を使うことはできません。VBAで使われている語と、同じ名前の変数名は使用できません。
-
変数の適用範囲変数は、宣言する場所や書き方によって、使用できる場所が限定されます。その変数が使用できる範囲のことを適用範囲またはスコープと呼びます。 プロシージャの中で宣言した変数は、宣言したプロシージャの中でしか使用できません。"
-
変数の適用範囲プロシージャの中で宣言し、そのプロシージャの中だけで使用できる変数を、局所変数またはローカル変数などと呼びます。
-
変数宣言セクションにDimステートメントで宣言した変数は、宣言したモジュール内の全プロシージャで使用できます。このような変数をモジュールレベル変数と呼びます。
-
変数モジュールレベル変数は、宣言したモジュール内でしか使用できません。そうではなく、別のモジュールでも使用できる変数は、宣言セクションでDimステートメントではなくPublicステートメントを使って宣言します。すべてのモジュールで使用可能な変数をパブリック変数と呼びます。
-
変数の初期値宣言した直後の変数は文字列型(String)には空欄が入っています。整数型(Integer)や長整数型(Long)など数値を格納する変数には数値の0が入っています。こうした最初から格納されている値を変数の初期値と呼びます。
-
Exit SubExit Subでプロシージャを終了させた場合、プロシージャが終了した後でも変数Aの値が保持されていますが、Endでプロシージャを終了させると、そこで変数Aの値がクリアされます。
-
定数VBAには多くの定数があらかじめ定義されています。VBAで使用できる定数は、名前の先頭がxl,vb,fmのいずれかで始まります。
-
定数xlで始まる定数 Excelの操作で使用される定数です。上記のように、セルを削除した後の挙動を決める「xlToLeft」など"
-
定数vbで始まる定数 Access VBAやPowerPoint VBAなど、他のアプリケーションのVBAでも共通して使用できる定数です。たとえば、文字列の中で改行するときに使う「vbCrLf」など"
-
定数fmで始まる定数 UserFormで使用される定数です。TextBoxコントロールの外観を定める「fmSpecialEffectflat」など"
-
Valueプロパティの省略オブジェクトの式の基本形は「対象.様子」「対象.命令」いずれにしても最低2つの単語が必要です。しかし、対象がセルのときだけは、対象とだけ記述することができます。これはValueプロパティを指定したものとみなされます。
-
EndプロパティEndプロパティは実際にアクティブセルを移動するのではなく、移動するであろうセルを表します。
-
Selection厳密には、Selectionはセルだけではなく「選択されているオブジェクト」を表します。たとえば、グラフを選択した状態では、選択されているグラフがSelectionで表されます。 Selectionに命令する場合、セル範囲や非連続のセル範囲に対して行えない操作をしたときは、マクロがエラーになります。"
-
複数のセルの指定セル範囲A1:C3を指定するとき、多くの場合はRange(""A1:C3"")と記述します。もうひとつの書き方があり、 Range(左上のセル、右下のセル) という書式です。A1やC3といったセルのアドレスだけではなく、セルそのものを指定できます。たとえば、Range(""A1:C3"")は次のように記述できます。 Range(Range(""A1""),Range(""C3"")) Range(Cells(1,1), Cells(3, 3))
-
行Rows(4)やRows("4:4")と、Range("4:4")は意味が異なります。4行目という行を表していますが、Range("4:4")は4行目にあるすべてのセルを表しています。たとえば行の高さを自動調整するAutoFitメソッドは行のメソッドです。セルのメソッドにはAutoFitメソッドはありませんので、Rows(4).AutoFitは動作しますが、Range("4:4").AutoFitはエラーになります。
-
For…Nextステートメントfor…nextステートメントは、回数による繰り返しの命令です。For...Nextステートメントでは必ず変数を使います。この変数の中に、初期値で指定した数値から、終了値で指定した数値までが順番に格納されます。Forステートメントで使用する変数をカウンタ変数と呼びます。
-
指定した回数だけ繰り返すForステートメントの変数はI,j,kを使うことが多いです。また変数には数値が格納されますので、型を指定するときはLong(長整数型)またはInteger(整数型)を指定しましょう。
-
変数の増減に関する指定"Dim I As Long For i = 1 To 10 Next i" 左のように記述すると変数iは1から10まで1ずつ増加します。1ずつではなく2ずつ増加させるには、終了値の後ろにStepを指定します。Stepにマイナスの数値を指定してカウンタ変数を減らしていくときは、マイナスをつけます。"Dim I As Long For i = 1 To 10 Step 2 Dim I As Long For i = 1 To 10 Step -1"
-
複数の条件を指定する条件分岐に、複数の条件を指定することができます。複数の条件を指定するときはAndまたはOrで区切ります。
-
WithステートメントのルールWithステートメントはWithで始まりEnd Withで終わります。オブジェクトの先頭には「.」で開始します。「.」で始まらない命令はWithステートメントには関係がないと判断されます。
-
WithステートメントのルールWithステートメントによる主語(オブジェクト)の省略は、行頭だけではなく、次のように使うこともできます。"With Range(""A1"") . Value = . Value +1 これは Range(""A1""). Value = Range(""A1"") . Value +1 と同じ意味です。"
-
セル内で使用する関数セル内で使用するワークシート関数には、Now関数のほかに、本日の日付だけを返すTODAY関数がありますが、VBAにはTODAY関数はありません。
-
自動型変換あるいは自動型キャスト引数に指定した"100"はダブルクォーテーションで囲まれている文字列です。しかし。IsNumeric関数はTrueを返します。これは文字列の"100"は数値の100に変換できるため、VBAが数値に変換したためです。このように文字列型を自動的に数値型へと変換する仕組みを自動型変換あるいは自動型キャストと呼びます。
-
自動型変換あるいは自動型キャストVBAでは、数値型から文字列型への自動変換も行われます。後述するMsgBox関数は、表示するメッセージを指定する引数「文字列」に、文字列型を指定することになっています。しかしMsgBox 100などは正常に動作します。これは自動変換されるためです。
-
ユーザーの操作を判定するMsgBoxはユーザーがどのボタンをクリックしたかを返す関数です。 ・複数のボタンを表示したとき→関数の戻り値で結果を判定する→戻り値を受け取る ・OKボタンだけを表示したとき→関数の戻り値は必要ない→戻り値を受け取らない"
-
ユーザーの操作を判定するVBAでは関数の戻り値を受け取るときは、関数の引数を「括弧で囲む」。戻り値を受け取らないときは関数の引数を「括弧で囲まない」という決まりがあります。
-
文字列の途中で改行改行したい位置にvbCrLfを指定します。VBAで定義されている、改行コードを表す定数は、vbCrLf以外にもあります。複数の改行コードが定数として定義されているのは、使用しているOSの種類や、使用する場所によって改行コードが異なるからです。
-
シートの操作もしブック内にグラフシートが存在していて、それらの中でワークシートだけを対象にしたいのなら、Sheets.CountではなくWorksheets.Countとします。
-
シートの削除マクロでシートを削除する場合、この確認メッセージでマクロが停止してしまいます。このメッセージを表示しないでワークシートを削除するには、DisplayAlertsでメッセージを抑止します。しかし、何らかのトラブルによりFalseのままになると、確認メッセージが表示されなくなります。明示的にDisplayAlertsをTrueにしておくといいでしょう。Application. DisplayAlerts = True
-
非表示のシートVBAでは非表示シートのセルも表示されているシートと同じように動作できますが、非表示シートは、印刷できないなどの制約もあります。
-
ブックの操作Workbooks("C:")のようにパスは指定しません。VBAで扱えるのはExcelで開いたブックだけです。Excel内のことですから、パスは必要なくファイル名を指定します。パスを指定するのは、ブックを開くときだけです。
-
ブックの操作現在開いているブックの中に、まだ名前を付けて保存されていないブックがあったとき、そのブックを指定する場合は Workbooks(""Book1"") のように拡張子をつけません。まだ保存されていないのですから、拡張子は決まっていないからです。"
-
ブックの保存ブックを保存するとき、メッセージのいいえやキャンセルボタンが押されたとき、SaveAsメソッドが中断されエラーが発生します。しかし、エラーが発生しても、そのエラーを無視することはできます。それには On Error Resume Next という命令を使います。
-
ブックの保存ブックのデータに何らかの編集が行われ、その編集内容が保存されているかどうかを調べるには、WorkbookオブジェクトのSavedプロパティを使います。Savedプロパティは、編集内容が保存されているときはTrue、保存されていないときはFalseを返します。
-
ブックを閉じるブックを閉じるにはCloseメソッドを実行します。次のコードはアクティブブックを閉じます。ActiveWorkbook. Close
-
ブックを閉じる保存されていないとき、Closeメソッドを実行すると確認メッセージが表示されます。こうした確認メッセージを表示させたくないときは、次のように対処します。↓
-
変更を保存したいとき変更を保存して閉じるときは。Closeメソッドを実行する前に、そのブックを上書き保存します。 または、Closeメソッドの引数を指定することも可能です。Closeには引数 SaveChanges があり、この引数にTrueを指定すると、自動的に変更を上書き保存してからブックを閉じます。
-
変更を保存したくないときActiveWorkbook.Close SaveChanges:=False
-
マクロの実行 Excelから実行するマクロボタンは上部と下部に分かれています。上部はすでに作成してあるマクロを実行するためのダイアログが表示されます。下部をクリックするとメニューが表示されるので、マクロダイアログボックスが表示されます。下部をクリックするとメニューが表示されるので、「マクロの表示」をクリックします。Alt+F8
-
QAT①QATの右側にある「クイックアクセスツールバーのユーザー設定」をクリックします。 ②表示されるメニューから「その他コマンド」を実行します。 ③実行すると「Excelのオプション」ダイアログボックスが表示され、QATの設定画面が表示されます。 ④「コマンドの選択」リストで「マクロ」を選択すると、現在開いているブックに書かれているマクロの名前(プロシージャ名)が下のリストに表示されます。 ⑤QATに登録したいマクロを選択して「追加」ボタンをクリックします。実行すると、選択したマクロが右側のリストに登録されます。右側のリストがQATに表示されるアイコンです。 ⑥「OK」ボタンをクリックすると「Excelのオプション」画面が閉じ、QATにマクロのボタンが追加されます。登録したマクロのボタンにマウスポインタを合わせると、登録したマクロの名前(プロシージャ名)が表示されます。 ⑦ボタンをクリックすると、登録したマクロが実行されます。"
-
QATQATにマクロを登録するとき、QATに表示するアイコンの種類を変更することはできません。 QATにマクロを登録すると、登録したマクロのボタンが常に表示されます。そのマクロが記述されているブックをExcelで開いていない場合、ボタンをクリックすると、マクロが記述されているブックが読み込まれてマクロを実行します。 QATに、常にマクロのボタンを表示するのではなく、マクロが記述されているブックを開いているときだけQATにボタンを表示することもできます。先の操作では、マクロを登録するとき、右側の「クイックサクセスツールバーのユーザー設定」リストで「すべてのドキュメントに適用(既定)」が選択されていました。 特定のブックを開いたときだけQATのボタンを表示するには、この「クイックアクセスツールバーのユーザー設定」リストで、マクロが記述されているブックを選択します。"
-
ボタンや図形からマクロを実行する①開発タブの挿入ボタンをクリックします。 ②フォームコントロールのボタンをクリックします。 ③マウスポインタが十字に変わります。その状態で、ワークシート上の、ボタンを配置したい位置でマウスをドラックします。 ④実行すると、ドラッグした位置にボタンが挿入されます。ボタンが挿入されると、まず「マクロの登録」ダイアログが表示されます。 ⑤ボタンに登録したいマクロを選択してOKボタンをクリックします。"
-
ボタンや図形からマクロを実行するすでに作成してあるマクロをボタンに登録するだけでなく、ボタンに登録するマクロを新しく作成することもできます。新しいマクロを作成して、そのマクロをボタンに登録するには「新規作成」ボタンをクリックします。このとき「マクロ名」ボックスに表示されている名前のマクロ(プロシージャ)が新しい標準モジュールに作成されます。マクロ名(プロシージャ名)は、自由に変更できます。 OKボタンをクリックすると「マクロの登録」ダイアログボックスが閉じます。閉じた直後は、配置したボタンが選択された状態になっているので、任意のセルをクリックして、ボタンの選択を解除します。ボタンをクリックすると、ボタンに登録したマクロが実行されます。"
-
マクロで行う2種類の操作Excelのセルに対してマクロで行う操作は、大きく2つに分類できます。ひとつは、セルをひとつずつ処理する操作で、もうひとつは複数のセルに対して、何らかの処理を行う操作マクロです。
-
セルをひとつずつ処理する操作次のコードは、セル範囲A2:A13をチェックして、もしセルの値が"広瀬"だったら、C列のセルを2倍してD列に代入します。"Dim I As Long For i = 2 To 13 If Cells(i, 4) = ""広瀬"" Then Cells(i, 4) = Cells(i, 3) * 3"
-
セル範囲を処理する操作の例次のコードは、セルA1を含む表にオートフィルターを設定し、A列が"広瀬"のデータをSheet2のセルA1へコピーします。
-
マクロを構成する3つの要素マクロは必ず次の3つの要素で構成されています。 ・範囲 ・条件 ・処理 これらは、VBAに限らないプログラミングの3要素です。次のコードは、セル範囲A2:A13をチェックして、もしセルの値が""広瀬""だったら、C列の数値を2倍にしてD列に代入します。"
-
インデントインデントは、一般的に「マクロのコードを読みやすくするため」に行います。この読みやすくという意味は、どこが「範囲」で「条件」は何で、どんな「処理」をしているかが一目でわかる、ということです。
ログイン