ExcelでのVBAレコードナビゲーション
データを管理する事業主として、Microsoft Excelに組み込まれている無料のVBAエディタを起動することで、Microsoft Visual Basic for Applicationsを試すことができます。 Visual Basicと同様に、VBAはスプレッドシートの行をナビゲートする単純なフォームを構築することによって習得することができる成熟したプログラミング言語です。 フォームを作成したら、ボタンをクリックしてExcelからアクセスできます。
エクセルレコード
データの言語では、レコードはエントリに関する一連の情報です。 Excelでは、データ行のすべての情報がレコードを構成します。 各列はデータフィールドに対応します。 個々の行をクリックするか、Excelの「検索」機能を使用して特定の検索語を含む行を探すことで、レコード間を移動できます。 VBAは3番目の選択肢を提供します:VBA行選択。
VBAエディタ
マクロを使用しない場合、または[開発者]タブを表示する場合は、ExcelにVBAエディタがあることを知らないかもしれません。 [ファイル]、[オプション]、[リボンのカスタマイズ]をクリックして表示することができます。[開発者]チェックボックスをクリックすると選択され、Excelに[開発者]タブを追加します。 「マクロ」ボタンをクリックするとマクロウィンドウが開き、「Visual Basic」ボタンをクリックするとVBAエディタが起動します。
Excelフォーム
開発者はVBAエディタを使用して入力フォームを作成することが多く、フォームに表示されるテキストボックス内でスプレッドシートデータを編集して管理できます。 スプレッドシートの行を移動するなどのアクションを実行するフォームを作成することもできます。 [挿入]をクリックして[ユーザーフォーム]を選択すると、新しいフォームが作成され、VBAによって編集ウィンドウに追加されます。フォームの横にあるツールボックスからボタンをドラッグすると、フォームに表示されます。たとえば、[前へ]ボタンをクリックすると、2つのボタンをフォームにドラッグし、PropertyBoxウィンドウに表示される[キャプション]テキストボックスに目的のラベルを入力して、キャプションを変更する必要があります。
前のボタン
デザインモードでフォームのボタンをダブルクリックすると、編集ウィンドウに次のような空のVBAが表示されます。
Private Sub CommandButton1_Click()
終了サブ
このコードはタスクを実行するためのコードを含むことができるサブルーチンの略であるVBA Subを定義します。 End Subステートメントの前に次のコードを貼り付けた場合、[前へ]ボタンをクリックすると、スプレッドシートの前のレコードに移動します。
Integer As Dim currentRow = ActiveCell.Row -
currentRow <1の場合、currentRow = 1の場合
行(currentRow)。選択
最後の行に表示されているSelectメソッドは、アクティブセルを含む行の上の行を選択するため、Excelは前のレコードに移動します。 ActiveCell.Rowプロパティは現在の行の値を保持します。 「F5」を押してフォームを開きます。 スプレッドシートを逆方向に移動するには、[前へ]ボタンをクリックします。
ボタンを追加する
フォームを閉じ、「次へ」ボタンをダブルクリックして、コードウィンドウに表示されるEnd Subステートメントの前に以下のコードを追加します。
Integer As Dim currentRow = ActiveCell.Row -
currentRow <1の場合、currentRow = 1の場合
行(currentRow)。選択
スプレッドシートの最初のレコードに移動するボタンを追加するには、End Subステートメントの前にこのコードを貼り付けます。
行(1)を選択します。
実装
コードを追加して、Excelのメインウィンドウでスプレッドシートを操作しながらフォームを起動できるようにします。 「挿入」をクリックして「マクロ」を選択します。「名前」テキストボックスにマクロの名前を入力します。 以下に示すコードを編集ウィンドウに貼り付けます。
Sub Navigate()UserForm1.Show False End Sub
Excelのメインウィンドウに戻り、[マクロ]をクリックします。モジュールに追加したSubの名前を示すマクロのリストが別のウィンドウに表示されます。この例では、その名前は[Navigate]です。ボタンをクリックすると、スプレッドシート内のレコード間を移動できます。