VBA Offset演技怪怪的?
VBA Offset acting strange?
也许有些事情我不知道,但我正在使用 Offset 在一个单元格中查找值并将它们导出到另一个单元格。有几次,Offset 不是我所期望的。例如,在代码中:
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
Offset 的第二个参数有时不是我所期望的,我不确定为什么会这样。希望有人可以对此有所了解?谢谢
Excelforum.com 的一位非常乐于助人的人帮助了我并提供了这个作为答案。它有效,但我不能说我完全理解为什么。我以前用过这个没有点的代码,它也有效,但这次没有。如果有人可以提供一些指导,将不胜感激。
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(SendToMRP.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
也许有些事情我不知道,但我正在使用 Offset 在一个单元格中查找值并将它们导出到另一个单元格。有几次,Offset 不是我所期望的。例如,在代码中:
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
Offset 的第二个参数有时不是我所期望的,我不确定为什么会这样。希望有人可以对此有所了解?谢谢
Excelforum.com 的一位非常乐于助人的人帮助了我并提供了这个作为答案。它有效,但我不能说我完全理解为什么。我以前用过这个没有点的代码,它也有效,但这次没有。如果有人可以提供一些指导,将不胜感激。
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(SendToMRP.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