ポケモンデータの転記について
できること
入力シートからデータシートに行単位で転記を行います。
'Rangeオブジェクト:固定位置のセルの場合、セル範囲の場合、名前定義を使う場合 'Longオブジェクト: 整数を格納する型の一種 'オブジェクト名を使って型指名する! Sub addNewRecord(newRecordList() As Variant) Dim newRecordRng As Range, rowNo As Long 'インデックスの値(管理番号)を指定して一つ一つ格納する 'newRecordList = Array(1,2,3,4,5,6,7) 'With:同じオブジェクトに対して複数の処理を実行する記述(With オブジェクト名) With Worksheets("データシート") '"xlDownを使っていないのは、途中のセルに空欄があると止まり最終行を取得できないため 'Rows:Rangeオブジェクトを返すRowsプロパティ 'Count:RangeオブジェクトのCountプロパティ 'Rows.Count:データの入力されている最終行を表す 'B列のデータ入りのセルの最後の行の下のセル rowNo = .Cells(Rows.Count, "B").End(xlUp).Row + 1 'Set:変数に何かを代入する命令をする Set newRecordRng = .Range(.Cells(rowNo, "A"), .Cells(rowNo, "C")) End With newRecordRng.Value = newRecordList End Sub Sub 転記() '3つのデータを扱う配列を用意 Dim dataRng As Range, dataCount As Long, i As Long '可変するデータを扱うセル範囲をセット '可変位置にあるセルから、今回のデータの総数を算出 Dim tmpRec(2) As Variant Set dataRng = Range("B1:B3") 'WorksheetFunction:VBAの標準の関数にない機能が使える 'COUNTA関数:dataRngとColumns(1)のデータ数を求める dataCount = _ Application.WorksheetFunction.CountA(dataRng.Columns(1)) '転記用データを作成 '1行から最終行(dataCount)まで繰り返す For i = 1 To dataCount '可変部分(行ごとに転記をしたい場合) tmpRec(0) = dataRng.Cells(1, i).Value tmpRec(1) = dataRng.Cells(2, i).Value tmpRec(2) = dataRng.Cells(3, i).Value Call addNewRecord(tmpRec) Next End Sub