Microsoft Excelでマクロレコーダーを使用して
ExcelとVBE(Visual Basic Editor)を開きます。変更されていない限り、VBEウィンドウには_ProjectExplorer_ウィンドウと_Properties_ウィンドウが含まれます(これらには[表示]メニューからアクセスできます)。
プロジェクトエクスプローラー:ファイルマネージャーのように機能します。ブック内のコードをナビゲートするのに役立ちます。
プロパティウィンドウ:現在のワークブック(例:Book1)の現在アクティブなオブジェクト(例:Sheet1)のプロパティを表示します。
この記事では、Excelでのマクロ記録がいかに簡単かを学びます。
演習1:マクロの記録。
この演習では、マクロが記録されたときに何が起こるかを示し、絶対参照と相対参照の記録の違いを示します。
1.新しいワークブックの空のワークシートで、セルC10を選択します。2。_ThisWorkbook_にマクロを保存するオプションを指定してマクロレコーダーを起動します。この時点で、VBEは新しい_Modules_フォルダーを作成します。行ってそれを見るのは非常に安全です-あなたの行動は記録されません。フォルダの横にある[+]をクリックして、VBEがフォルダにモジュールを配置し、_Module1_という名前を付けていることを確認します。モジュールアイコンをダブルクリックして、コードウィンドウを開きます。 Excelに戻ります。
3._StopRecording_ツールバーのRelativeReferenceボタンが押されていないことを確認してください。
4.セルB5を選択し、レコーダーを停止します。
-
VBEに切り替えて、コードを確認します。
Range( “B5″)。Select 6.ここで、まったく同じ方法で別のマクロを記録しますが、今回は[相対参照]ボタンを押します。
-
VBEに切り替えて、コードを確認します。
ActiveCell.Offset(-5、-1).Range( “A1″)。Select 8.ここで別のマクロを記録しますが、セルB5を選択する代わりに、B5から始まるセル3×3のブロックを選択します(セルB5:F7を選択)
-
VBEに切り替えて、コードを確認します。
ActiveCell.Offset(-5、-1).Range( “A1:B3″)。Select 10.最初にC10とは異なるセルを選択して、マクロを再生します(Macro2およびMacro3の場合、開始セルは行6または以下-以下のステップ11を参照)
Macro1-常に選択範囲をB5に移動します。Macro2-選択範囲を選択したセルの5行上および1列左のセルに移動します。
_Macro3—選択したセルの左側に5行1列から始まる6つのセルのブロックを常に選択します。
-
Macro2を実行しますが、行5以上のセルを選択してエラーを強制します。マクロは、コードが開始点の5行上にあるセルを選択するように指示しているため、存在しないセルを選択しようとします。これは、シートの上部から外れています。デバッグを押して、問題の原因となったマクロの部分に移動します。
注:VBEがデバッグモードの場合、問題の原因となったコード行は黄色で強調表示されます。続行する前に、マクロを「リセット」する必要があります。 VBEツールバーの[リセット]ボタンをクリックするか、[実行]> [リセット]に移動します。黄色の強調表示が消え、VBEがデバッグモードを終了します。
12.このようなユーザーエラーを予測することが重要です。最も簡単な方法は、エラーを無視して次のタスクに進むようにコードを変更することです。これを行うには、次の行を追加します…エラー時再開次へ…マクロの最初の行のすぐ上(Sub Macro1()の行の下
13.前と同じように_Macro2_を実行し、シートの高すぎます。今回は入力した行は、実行できないコード行を無視するようにExcelに指示します。エラーメッセージは表示されず、マクロはすべて実行して終了します。このエラー処理方法は慎重に使用してください。これは非常に単純なマクロです。Aエラーが単に無視された場合、より複雑なマクロはおそらく期待どおりに実行されません。また、ユーザーは何かがうまくいかなかったことに気づきません。
-
_Macro2_のコードを変更して、より洗練されたエラーハンドラーを含めます。 |||| Sub Macro2()
エラー時GoTo ErrorHandler ActiveCell.Offset(-5、-1).Range( “A1″)。Select Exit Sub ErrorHandler:
MsgBox “開始する必要があります行5の下 “
サブ15を終了します。今回は、問題が発生したときにダイアログボックスが表示されます。エラーがない場合ExitSub行を指定すると、マクロはジョブの完了後に終了します。そうしないと、エラーがなくてもユーザーにメッセージが表示されます。
記録されたマクロの改善VBAの基本を学ぶ良い方法は、マクロを記録し、Excelが独自のコードをどのように作成するかを確認することです。ただし、多くの場合、記録されたマクロには、必要以上のコードが含まれています。次の演習では、記録されたマクロによって生成されたコードを改善および合理化する方法を示します。
演習2:記録されたマクロの改善_この演習は、マクロが記録されると、必要以上に多くのコードが生成されることが多いことを示しています。これは、Withステートメントを使用してコードを作成する方法を示しています。_
1.任意のセルまたはセルのブロックを選択します。
2.マクロレコーダーを起動し、マクロFormatCellsを呼び出します。相対参照設定は関係ありません。
-
[フォーマット]> [セル]> [フォント]に移動し、[Times NewRoman]と[Red]を選択します。
パターンに移動し、_黄色_を選択します。
Alignmentに移動し、Horizontal、Center Go to Numberを選択し、_Currency_を選択します。
-
[OK]をクリックして、レコーダーを停止します。
-
[元に戻す]ボタン(または_Ctrl + Z_)をクリックして、ワークシートへの変更を元に戻します。
6.セルのブロックを選択し、_FormatCells_マクロを実行します。元に戻すことはできませんのでご注意ください。セルに入力して、フォーマットの結果を確認します。
7.コードを見てください:
Sub FormatSelection()
Selection.NumberFormat = “$#、## 0.00”
With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .ShrinkToFit = False .MergeCells = False End With With Selection.Font .Name = “Times New Roman”
Sub FormatSelection()
Selection.NumberFormat = “$#、## 0.00”
With Selection .HorizontalAlignment = xlCenter End With With Selection.Font .Name = “Times New Roman”
10.コードをさらに変更します:
Sub FormatSelection()
選択あり.NumberFormat = “$#、## 0.00”
12.ダイアログボックスに移動する代わりに、ツールバーボタンを使用して同じマクロを記録してみてください:
フォントを_TimesNewRoman_に変更します。フォントの色を_Red_に変更します。塗りつぶしの色を_Yellow_に変更します。_Center_ボタンをクリックします。_Currency_ボタンをクリックします。13。コードを確認します。必ずしも必要ではないものがまだたくさんあります。 Excelはすべての_default_設定を記録しています。これらのほとんどは安全に削除できます。
14.コードを直接編集して、色、フォント、数値形式などを変更してみてください。
演習3:記録されているマクロを監視する_この演習では、記録されているマクロのビルドを監視することで学習できることを示しています。これは、Withステートメントが適切でない場合の例でもあります。_
1.ファイルVBA01.xlsを開きます。
このワークシートは視覚的に問題がなく、ユーザーが理解できますが、空のセルが存在すると問題が発生する可能性があります。データをフィルタリングして、何が起こるかを確認してください。 [データ]> [フィルター]> [オートフィルター]に移動し、地域または月でフィルターします。 Excelがユーザーと同じ仮定をしていないことは明らかです。空のセルを埋める必要があります。
-
ExcelウィンドウとVBEウィンドウを(垂直に)並べて並べます。
3.データ内の任意のセルを選択します。空のセルの場合は、データを含むセルに隣接している必要があります。
4.マクロレコーダーを起動し、マクロ_FillEmptyCells_を呼び出します。
相対参照を記録するように設定します。
-
VBEウィンドウで、モジュール(Module1)を見つけてダブルクリックします
現在のブックで編集ペインを開き、[プロジェクトエクスプローラー]ウィンドウと[プロパティ]ウィンドウをオフにします(スペースを空けるためのみ)。
6.次のように新しいマクロを記録します。
手順1.Ctrl + *(現在の領域を選択するため)
ステップ2.編集>移動>特殊>空白> OK(現在の領域のすべての空のセルを選択するため)
ステップ3. = [UpArrow]と入力し、Ctrl + Enterを押します(選択したすべてのセルに入力します)
ステップ4.Ctrl + *(現在の領域を再度選択するため)
ステップ5.Ctrl + C(選択をコピーする-どの方法でもかまいません)
手順6. [編集]> [形式を選択して貼り付け]> [値]> [OK](データを同じ場所に貼り付けますが、数式は破棄します)
ステップ7.Esc(コピーモードを終了するため)
手順8.録音を停止します。
7.コードを見てください:
Sub FillEmptyCells()
Selection.CurrentRegion.Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.FormulaR1C1 = “= R [-1] C”
Selection.CurrentRegion.Select Selection.Copy Selection.PasteSpecial Paste:= xlValues、Operation:= xlNone、SkipBlanks:= _ False、Transpose:= False Application.CutCopyMode = False End Sub8。スペースとアンダースコアの使用に注意してください。 「_」は、1行のコードを新しい行に分割することを示します。これがないと、Excelはコードを2つの別個のステートメントとして扱います。
9.このマクロはよく考えられたコマンドで記録されているため、不要なコードはほとんどありません。 _Paste Special_では、「xlValues」という単語の後のすべてを削除できます。
10.マクロを試してください。次に、オートフィルターツールを使用して、違いを確認します。