EXCEL(VBA)繰り返し処理をする。

基本マクロの一つ(自分流)の説明をしたことがありませんでしたのでUPします。

INPUTというシートから指定した項目をOUTPUTのシートに移す単純な処理です。
上から順番に実行する処理です。

A)Set set_data02 = Worksheets(mySheetName002).Range(“A1")
は、変数(set_data02)に、ワークシートの場所をセットします。
シートにピンを刺して場所を決めるイメージですかね。

B)set_data02.Offset(0, 3).Value = set_data01.Offset(0, 11).Value
ですが、A)で刺したピンの位置から見てどこのデータを見るかです。
OUTPUTのピンを刺してある位置から列方向(右)に3個目の所に
INPUTのピンを刺してある位置から列方向(右)に11個目の所を代入です。

C)Set set_data02 = set_data02.Offset(1, 0)
ピンを刺してある位置を、行方向(下)に1個動かすです。

D)
Do Until set_data01.Offset(0, 0).Value = “"
Loop
ピンを刺してある場所がスペースになったら抜けるです。

例マクロ

    Dim set_data01 as Object
    Dim set_data02 as Object

   '### シート名セット ###
    mySheetName001 = "INPUT"
    mySheetName002 = "OUTOUT"

   '###クリア###
    Sheets(mySheetName002).Select
    Cells.Select
    Selection.Delete Shift:=xlUp
    
   '###head 作成###
    Set set_data02 = Worksheets(mySheetName002).Range("A1")
    set_data02.Offset(0, 0).Value = "コード"
    set_data02.Offset(0, 1).Value = "商品名"
    set_data02.Offset(0, 2).Value = "冊数"
    set_data02.Offset(0, 3).Value = "金額"
    
   '###開始位置SET###
    Set set_data01 = Worksheets(mySheetName001).Range("A2")
    Set set_data02 = Worksheets(mySheetName002).Range("A2")
    

    '### スペースまで。(データが無くなるまで) ###
    Do Until set_data01.Offset(0, 0).Value = ""
       
       set_data02.Offset(0, 0).Value = set_data01.Offset(0, 0).Value 
       set_data02.Offset(0, 1).Value = set_data01.Offset(0, 2).Value 
       set_data02.Offset(0, 2).Value = set_data01.Offset(0, 10).Value
       set_data02.Offset(0, 3).Value = set_data01.Offset(0, 11).Value
             
      '### INPUT OUTPUT 次行へ ###
       Set set_data01 = set_data01.Offset(1, 0)
       Set set_data02 = set_data02.Offset(1, 0)

    Loop

    MsgBox(" 終了メッセージ ")
    

VBA(マクロ)

Posted by master