|
▼doro さん:
>
>1行目だったときは、テーブルの項目行しかないときで、
>=データがまだない状態と想定しています。
>なので、その場合の伝票番号は『1』に設定したいのです。
つまり、End(xlUp)で求めた最終行が1行目なら、項目行だけ書き込んである状態
ということで、データ書き込み行は自動で 2行目、No は 1 ということですか?
なら、以下でどうですか?
Sub 明細保存2()
Dim wst1 As Worksheet 'コピー元
Dim wst2 As Worksheet '転記先
Dim i As Long 'ループ用
Dim LastCell As Range 'データ最終セル
Dim newRow As Long '貼付先行番号
Dim No As Long '伝票番号
Set wst1 = ActiveSheet '入力元が複数パターンあるので
Set wst2 = ThisWorkbook.Worksheets("DB")
Set LastCell = wst2.Range("A" & Rows.Count).End(xlUp)
If LastCell.Row = 1 Then '一行目のとき = 項目行だけのとき
newRow = 2
No = 1
Else
newRow = LastCell.Row + 1
No = LastCell.Value + 1
End If
For i = 21 To 47
If wst1.Range("G" & i) = "" Then
Exit For
Else
With wst2.Range("A" & newRow)
.Value = No '伝票番号
.Range("B1").Value = wst1.Range("H2").Value '日付
.Range("C1").Value = wst1.Range("A3").Value '発注先
.Range("D1").Value = wst1.Range("B9").Value '件名
.Range("E1").Value = wst1.Range("B11").Value '納品先
.Range("F1").Value = wst1.Range("I15").Value '発注者
.Range("G1").Value = wst1.Range("A" & i).Value '品名
.Range("H1").Value = wst1.Range("D" & i).Value '仕様
.Range("I1").Value = wst1.Range("G" & i).Value '数量
.Range("J1").Value = wst1.Range("F" & i).Value '単位
.Range("K1").Value = wst1.Range("H" & i).Value '備考
.Range("L1").Value = wst1.Range("B14").Value '希望納期
.Range("N1").Value = "FAX" '注文方法
.Range("O1").Value = wst1.Range("A18").Value '伝票備考1
.Range("P1").Value = wst1.Range("A19").Value '伝票備考2
End With
newRow = newRow + 1 'つぎの行
No = No + 1 '◆ この行追加
End If
Next i
End Sub
|
|