ขนาดวิดีโอ: 1280 X 720853 X 480640 X 360
แสดงแผงควบคุมโปรแกรมเล่น
เล่นอัตโนมัติ
เล่นใหม่
大変勉強になる動画ありがとうございます。動画中で質問があるのですがWith Sheets("台帳").Cells(Rows.Count, "A").End(xlUp) .Offset(1, 0).Resize(3) = Sheets("請求書").Range("A2").Value '取引先 .Offset(1, 1).Resize(3) = Sheets("請求書").Range("A10:A12").Value '品目 .Offset(1, 2).Resize(3) = Sheets("請求書").Range("D10:D12").Value '単価 .Offset(1, 3).Resize(3) = Sheets("請求書").Range("E10:E12").Value '数量 End Withとwithを使用した場合は問題ないのですが、withを使わずにいちいちSheets("台帳").Cells(Rows.Count, "A").End(xlUp)を冒頭に記入した場合、B列以降、行がずれます。起点が移ってoffsetでずれていくのだと思うのですが、with でくくった場合はなぜずれないのでしょうか?
コメントありがとうございます!「With」を使った場合は、Withでくくった部分のVBAコードが「記憶」されますので、セルの値が変更された場合でも、最初に実行したセル位置が使われることになります。「With」でくくらない場合は、その都度、VBAコードが実行されて最終行を更新してしまい、Offsetで1行下に移動されてしまいますので、行がずれてしまいます。わかりづらい場合は、次のように変数に行番号を保存する方法もあります。↓最終行を取得「A=Sheets("台帳").Cells(Rows.Count, "A").End(xlUp).Row」↓Withを使わない場合Sub TEST2() '最終行を取得 Dim A A = Sheets("台帳").Cells(Rows.Count, "A").End(xlUp).Row '最終行+1行目に値を転記 Sheets("台帳").Cells(A + 1, 1).Resize(3) = Sheets("請求書").Range("A2").Value Sheets("台帳").Cells(A + 1, 2).Resize(3) = Sheets("請求書").Range("A10:A12").Value Sheets("台帳").Cells(A + 1, 3).Resize(3) = Sheets("請求書").Range("D10:D12").Value Sheets("台帳").Cells(A + 1, 4).Resize(3) = Sheets("請求書").Range("E10:E12").ValueEnd Subわかりやすい方法を使う方が良いかなと思いましたので、Withを使わない場合も記載してみました。参考になればと思います(^^)
@@IT-gx8sf 納得です。スッキリしました!ありがとうございます。大体でITさんの動画は簡単なコードから書き始めて、段階を一つずつ踏んで完成させるのでとても分かりやすいと思います。感謝しかありません😀
見積書をデータベース化しようと思っています。複数シートを転記は不要ですが紹介いただいた内容で試してみます。ありがとうございました。行き詰まったら教えていただけると助かります😊
動画大変役に立ちました、有難う御座いました。お願いがあります、請求書シートに取引先を変えて転記し、商品を3行だけではなく数行を使えたいのですが、よろしくご指導をお願いいたします。
大変勉強になる動画ありがとうございます。動画中で質問があるのですが
With Sheets("台帳").Cells(Rows.Count, "A").End(xlUp)
.Offset(1, 0).Resize(3) = Sheets("請求書").Range("A2").Value '取引先
.Offset(1, 1).Resize(3) = Sheets("請求書").Range("A10:A12").Value '品目
.Offset(1, 2).Resize(3) = Sheets("請求書").Range("D10:D12").Value '単価
.Offset(1, 3).Resize(3) = Sheets("請求書").Range("E10:E12").Value '数量
End With
とwithを使用した場合は問題ないのですが、withを使わずにいちいち
Sheets("台帳").Cells(Rows.Count, "A").End(xlUp)を冒頭に記入した場合、
B列以降、行がずれます。起点が移ってoffsetでずれていくのだと思うのですが、
with でくくった場合はなぜずれないのでしょうか?
コメントありがとうございます!
「With」を使った場合は、Withでくくった部分のVBAコードが「記憶」されますので、セルの値が変更された場合でも、最初に実行したセル位置が使われることになります。
「With」でくくらない場合は、その都度、VBAコードが実行されて最終行を更新してしまい、Offsetで1行下に移動されてしまいますので、行がずれてしまいます。
わかりづらい場合は、次のように変数に行番号を保存する方法もあります。
↓最終行を取得
「A=Sheets("台帳").Cells(Rows.Count, "A").End(xlUp).Row」
↓Withを使わない場合
Sub TEST2()
'最終行を取得
Dim A
A = Sheets("台帳").Cells(Rows.Count, "A").End(xlUp).Row
'最終行+1行目に値を転記
Sheets("台帳").Cells(A + 1, 1).Resize(3) = Sheets("請求書").Range("A2").Value
Sheets("台帳").Cells(A + 1, 2).Resize(3) = Sheets("請求書").Range("A10:A12").Value
Sheets("台帳").Cells(A + 1, 3).Resize(3) = Sheets("請求書").Range("D10:D12").Value
Sheets("台帳").Cells(A + 1, 4).Resize(3) = Sheets("請求書").Range("E10:E12").Value
End Sub
わかりやすい方法を使う方が良いかなと思いましたので、Withを使わない場合も記載してみました。
参考になればと思います(^^)
@@IT-gx8sf 納得です。スッキリしました!ありがとうございます。
大体でITさんの動画は簡単なコードから書き始めて、段階を一つずつ踏んで
完成させるのでとても分かりやすいと思います。感謝しかありません😀
見積書をデータベース化しようと思っています。
複数シートを転記は不要ですが
紹介いただいた内容で試してみます。
ありがとうございました。
行き詰まったら
教えていただけると助かります😊
動画大変役に立ちました、有難う御座いました。
お願いがあります、請求書シートに取引先を変えて転記し、商品を3行だけではなく
数行を使えたいのですが、よろしくご指導をお願いいたします。