シート1のB列の数字をシート2に転記して印刷する
 シート1のA列には、印刷を実行するタイミングとなる値が
入力されています。

【例】
 A列   B列
 a    静岡県静岡市
 b    東京都中央区
 b    東京都港区
 c    神奈川県小田原市
 c    神奈川県藤沢市
 c    神奈川県南足柄市

 Sheet2の動きは、「静岡県静岡市」を転記して印刷する。
「東京都中央区」を転記して、その次の行に「東京都港区」を転記して印刷する。
「神奈川県小田原市」を転記して、その次の行に「神奈川県藤沢市」を転記して、
その次の行に「神奈川県南足柄市」を転記して印刷する、となります。

 A列の値が同じかどうかを確認しながら、1行目からシート2へ内容をコピーします。
A列の値が変わったら、PrintOutメソッドでシート2を印刷します。
下記のマクロを実行する際には、次の点に注意してください。

(1)シート2の印刷ページ設定をあらかじめ行っておく。
(2)データは2列以上用意する。
(3)A列に空白がないようにデータを入力する。

Sub TEST()

    Dim iData    As Integer
    Dim iCntSame As Integer
    Dim sChkSame As String
    Dim WS2      As Worksheet
    Dim i        As Integer

    Worksheets("Sheet1").Select
    Set WS2 = Worksheets("Sheet2")
    WS2.Cells.Clear
    iData = Cells(1, 1).End(xlDown).Row
    sChkSame = Cells(1, 1).Value
    iCntSame = 0

    For i = 1 To iData
        If Cells(i, 1).Value = sChkSame Then
            iCntSame = iCntSame + 1
            WS2.Cells(iCntSame, 1).Value = Cells(i, 2).Value
        Else
            WS2.PrintOut
            Worksheets("Sheet1").Select
            WS2.Cells.Clear
            iCntSame = 1
            WS2.Cells(1, 1).Value = Cells(i, 2).Value
            sChkSame = Cells(i, 1).Value
        End If
    Next

    WS2.PrintOut

End Sub

 変数「iData」は「データ総数」、変数「iCntSame」はA列の同じデータの
カウント用、変数「sChkSame」は現在処理しているA列のデータの保存
に使っています。
 For〜Nextステートメント内では、i行のA列データとひとつ上のA列データを
比較して、同じだったらi行B列のデータをシート2に記述、違っていたら
シート2のデータを印刷してクリア後、i行A列のデータをシート2に記述してい
ます。
 最後に全てのデータを印刷して終了します。

Excel97



戻る


Excel Word Access VBA! モーグ