0
私にはわからないことがあるかもしれませんが、オフセットを使用して1つのセルの値を見つけて別のセルにエクスポートしています。オフセットは私が期待するものではありませんいくつかの時間がありました。たとえば、コードで:VBAオフセットが異常に機能していますか?
Option Explicit
Sub SendToMRP()
Dim AllSales As Worksheet
Dim SendToMRP As Worksheet
Dim ALS As Range, STM As Range, AL As Range, Rng As Range
Set AllSales = Worksheets("AllSales")
Set SendToMRP = Worksheets("SendToMRP")
With AllSales
For Each ALS In Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(3))
If (ALS.Offset(0, 50) = "Yes") Then
Else
'ALS.Offset(0, 50) = "Yes"
With SendToMRP.Cells(Rows.Count, 1).End(3)
.Offset(1, 0) = ALS.Offset(0, 0) ' OrderId
.Offset(1, 1) = ALS.Offset(0, 1) ' StoreFront or "Amazon"
.Offset(1, 2) = ALS.Offset(0, 2) ' OrderType'
.Offset(1, 3) = ALS.Offset(0, 3) ' PurchaseDate'
.Offset(1, 4) = ALS.Offset(0, 15) ' This should be 4, but 15 is the correct setting
.Offset(1, 5) = ALS.Offset(0, 5) ' and it continues back at 5
End With
End If
Next
End With
End Sub
時々オフセットのための第二引数は、私はそれがあることを期待するものではありません、これは、なぜ私はわかりません。うまくいけば誰かがこれについていくつかの洞察を発することができますか?ありがとう
まだコードをテストする方法はありませんが、別のワークシートオブジェクトで 'With'を入れ子にするとトラブルが発生すると思いますが、最初に確認して結果を確認できますか? – L42
または、ここで範囲を完全に修飾してください: '各ALS範囲(.Cells(2,1)、.Cells(Rows.Count、1).End(3))'。それは '.Range'を含んでいなければなりません。 @ L42は – L42
です。非修飾の 'Range'と' Rows'呼び出しは暗黙的に 'Activesheet'を参照しています。今、ネストされた 'With'ブロックは可読性を助けません。しかし、 'Sheet1.Cells(Sheet2.Rows.Count、1).End(3)'は意図したとおりに動作しないことはほとんど確実です。 –