▼任意のワークシートのセルを参照するユーザー定義関数
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」を選択し、【OK】ボタンをクリックします。
1~2の操作手順でもう1つボタンを表示し、Macro2を登録します。
ボタン1をクリックするとMacro1が、ボタン2をクリックするとMacro2が実行されます。
以上で、マクロをボタンに登録して、実行できるようになりました。
ボタンのテキストは、ボタンを右クリックして、【テキストの編集】を選択して変更します。
【表示】→【ツールバー】→【ユーザー設定】を選択します。
【コマンド】タブを選択し、【分類】で「マクロ」を選択します。
【ユーザー設定ボタン】をツールバーへドラッグ&ドロップします。
ツールバーのマクロボタンを選択した状態で、【選択したボタンの編集】をクリックし【名前】に『名前順の並べ替え』と入力します。
同様に、【マクロの登録】をクリックします。
マクロの登録画面で「Macro1」を選択し、【OK】とします。
ツールバーにマクロのコマンドボタンができました。