今まで作ってきたプログラムで、Excelの複数のシートをまたがって処理をしなければならない場合、

例えば、

 170-01.jpg

Sheet1のA列の値をSheet2にコピーする、みたいな処理を作る。。。しょっちゅうやってますが(^^;)

今まで、こんなコードで書いてきました。

Sub test()
    
    Dim lastgyou As Integer
    Dim i        As Integer
    Dim atai     As String
    
    'Sheet1を選択します
    Sheets("Sheet1").Select
    
    '最後の行を求めます
    ActiveSheet.Range("A1").End(xlDown).Select
    lastgyou = ActiveCell.Row
    
    '1行目から最後の行まで、Sheet2にコピーします。
    For i = 1 To lastgyou
        
        ' Sheet1 の i 行目の値を atai という変数に入れます。
        Sheets("Sheet1").Select
        atai = ActiveSheet.Cells(i, 1).Value
        
        ' Sheet2 の i 行目の値に atai を代入します。
        Sheets("Sheet2").Select
        
        ActiveSheet.Cells(i, 1).Value = atai
    Next

End Sub

もちろん、これで動くので良いですが、いちいち

Sheets(“Sheet1″).Select

Sheets(“Sheet2″).Select

で切り替えなくても、出来る方法がありました。

Sub test()
    
    Dim lastgyou As Integer
    Dim i        As Integer
    Dim atai     As String
    
    '最後の行を求めます
    lastgyou = Sheets("Sheet1").Range("A1").End(xlDown).Row
    
    '1行目から最後の行まで、Sheet2にコピーします。
    For i = 1 To lastgyou
        
        ' Sheet1 の i 行目の値を atai という変数に入れます。
        atai = Sheets("Sheet1").Cells(i, 1).Value
        
        ' Sheet2 の i 行目の値に atai を代入します。
        Sheets("Sheet2").Cells(i, 1).Value = atai
    
    Next

End Sub

今までは、Selectを使い、シートを選択して、「今現在アクティブのシート」という指定方法をしていましたが、直接シート名を指定して、セルの値を操作したり出来ます。

こちらのほうが、わかりやすいですね(^^)

こうなると、今まではSheetを切り替えるために、ataiという変数に一時的にSheet1の値を保存していましたが、それすらも必要ではなくなります。

Sub test()
    
    Dim lastgyou As Integer
    Dim i        As Integer
    
    '最後の行を求めます
    lastgyou = Sheets("Sheet1").Range("A1").End(xlDown).Row
    
    '1行目から最後の行まで、Sheet2にコピーします。
    For i = 1 To lastgyou
        
        ' Sheet1 の i 行目の値をSheet2 の i 行目に代入します。
        Sheets("Sheet2").Cells(i, 1).Value = Sheets("Sheet1").Cells(i, 1).Value
    Next

End Sub

えらいすっきりしました(^^;)

今後は、この形式でプログラムを作ってみたいと思います。

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2011 simple blog いろいろ勉強中 Suffusion theme by Sayontan Sinha