Home Excel(エクセル)マクロ・VBA

企業研修講師派遣のBESTグループ
出張パソコン教室ITスクール
webコンサルティングスクール
パソコンの家庭教師BEST

▼任意のワークシートのセルを参照するユーザー定義関数
Function RefSheet(objCell As Range, intRef As Integer) As Variant

 Application.Volatile
 RefSheet = Sheets(objCell.Parent.Index + intRef).Range(objCell.Address).Value

End Function

今回のユーザー定義関数では、どのセルを参照するのかと、どのワークシートを参照するのかを指定するために、引数は2つです。

1つ目の引数:objCellはセルを指定してください。
2つ目の引数:intRefはどのシートを参照するか整数で指定してください。

「-1」なら1つ左隣
「-2」なら2つ左隣
「1」なら1つ右隣
「2」なら2つ右隣
のシートを参照します。

objCell.Parent.Indexで、ユーザー定義関数:RefSheetを呼んでいるシートが何番目にあるかを取得できます。
 

マクロの自動記録を利用して、マクロを作成して実行してみましょう。
以下の例では、名前をふりがな順に並べ替るマクロを作成し、実行してみます。
元になるデータ表を作成します。

1.メニューバーの【ツール】→【マクロ】→【新しいマクロの記録】を選択します。
【マクロの記録】ダイアログが表示されますので、「マクロ名」「マクロの保存先」を確認して、【OK】をクリックします。

2.一般操作での並べ替えと同じように操作します。
対象セルをアクティブにします。
標準ツールバーの【昇順で並べ替え】ボタンをクリックします。
【記録】ツールバーの【記録終了】ボタンをクリックします。

 

メニューバーの【ツール】→【マクロ】→【マクロ】を選択します。
Macro1を選択して、【実行】ボタンをクリックすると、Macro1が実行されます。
 

メニューバーの【表示】→【ツールバー】→【フォーム】を選択し、フォームツールバーを表示します。

【ボタン】を選択し、シート上でクリックすると、【マクロの登録】ダイアログが表示されます。
「Macro1」を選択し、【OK】ボタンをクリックします。

1~2の操作手順でもう1つボタンを表示し、Macro2を登録します。
ボタン1をクリックするとMacro1が、ボタン2をクリックするとMacro2が実行されます。

以上で、マクロをボタンに登録して、実行できるようになりました。
ボタンのテキストは、ボタンを右クリックして、【テキストの編集】を選択して変更します。
 

【表示】→【ツールバー】→【ユーザー設定】を選択します。
【コマンド】タブを選択し、【分類】で「マクロ」を選択します。
【ユーザー設定ボタン】をツールバーへドラッグ&ドロップします。

ツールバーのマクロボタンを選択した状態で、【選択したボタンの編集】をクリックし【名前】に『名前順の並べ替え』と入力します。

同様に、【マクロの登録】をクリックします。

マクロの登録画面で「Macro1」を選択し、【OK】とします。

ツールバーにマクロのコマンドボタンができました。