小規模老人保健施設の給食業務向けExcelVBA練習帳、給食帳票管理にVBAを活用、リンク集2、CurrentRegionの使い方

Excel VBA

前書き

Excel初心者向けVBA練習帳シリーズではVBAのプログラム記述においては、VBAを知らないほんとの初心者を対象に記事を書いています。
そのため、プログラムの構造や書き方に非常に回りくどい冗長なところが多くあります。
自分自身もVBAは多少長く経験はありますが、独学で習得しているので間違って覚えている部分や上手くできていないところも多くありますから、プログラムについては動作確認の上記事に掲載しております。それでもバグやエラーが発生する場面もあろうかと思います。その時はお気軽にお問い合わせいただくなどお願いいたします。

CurentRegionの使い方

■Excelでデータベースを扱うときは私はカレントレジオンを多用しています。

データベースではデータを操作するとき「繰り返し処理」を使うことが多いです。

その場合For~Nextを使うのですがこの場合は繰り返しの範囲を指定する必要があります。

CurrentResion.Rows.countでその範囲の最終値を指定できます。

下図では任意に設定した小さいデータベースを作りCurrentResionを利用するプログラムを作って説明しました。赤丸説明ボタンをクリックするとSubプロシージャsetumeiのコードを実行します

データベース領域を選択してデータベースの登録番号のデータ行をメッセージボックスに行数分繰り返し表示します。

■上図のコードの続きです

がForの繰り返し処理の部分です。

この場合maxは6ですがデータベースの一行目は項目行なので ー1しています。

はコマンドボタンのクリックイベントです。

上図のSubプロシージャ setumei を呼び出しています。

プログラム呼び出し側コード

Private Sub CommandButton1_Click()
Call setumei
End Sub

メッセージボックスに表示する側

Private Sub setumei()
Dim max As Integer
Dim kaisigyou As Integer
Dim owarigyou As Integer
Dim kaisiretu As Integer
Dim owariretu As Integer
Dim r As Integer

With Cells(7, 3).CurrentRegion
    '領域を選択
    .Select
    
    '領域の行数=6
    max = .Rows.Count
    
    '領域の最初の一行目の行番号
    kaisigyou = .Rows(1).Row                '7
    
    '領域の最後の行の行番号
    owarigyou = .Rows(max).Row              '12
    
    '領域の最初の一列目の列番号
    kaisiretu = .Columns(1).Column          '3
    
    '領域の最後の列の列番号
    owariretu = .Columns(kaisiretu).Column  '5
    
'-------------------------------------
    For r = 1 To max - 1
        MsgBox Sheet1.Cells(r + kaisigyou, kaisiretu)
    Next r

End With

End Sub

 

コメント

タイトルとURLをコピーしました