Как исправить «VBA просто запустить одну часть кода и игнорировать другую» - PullRequest
0 голосов
/ 27 декабря 2018

Когда я нажимаю F8 для запуска и проверки кода строка за строкой, он работает отлично.Однако когда я использую F5 для запуска всего саба, VBA просто запускает один цикл For-Next.Если у кого есть такая же проблема?

Sub InputPurchaseData()

Dim rngPurchaseInfoLoop As Range, rngPurchaseInfo As Range
Dim rngPurchaseItemsFieldLoop As Range, rngPurchaseItemsField As Range
Dim rngPurchaseItemsLoop As Range, rngPurchaseItems As Range
Dim rngPurchaseDataFieldLoop As Range, rngPurchaseDataField As Range
Dim rngPurchaseDataRowLoop As Range, rngPurchaseDataRow As Range
Dim lngPurchaseItemRow As Long, lngPurchaseDataRow As Long
Dim msgOption As Boolean
Dim strPurchaseNumber As String

wsPurchaseOrder.Activate

Set rngPurchaseInfo = wsPurchaseOrder.Range("A1").CurrentRegion

Set rngPurchaseItemsField = wsPurchaseOrder.Range("B1", Range("B1048576").End(xlUp)).Find(What:="ITEM", _
        MatchCase:=True, LookAt:=xlWhole)

Set rngPurchaseItems = Range(rngPurchaseItemsField.Offset(2, 0), Range("B1048576").End(xlUp).Offset(-1, 0))

Set rngPurchaseItemsField = Range(rngPurchaseItemsField, rngPurchaseItemsField.End(xlToRight))

Set rngPurchaseDataField = wsPurchaseData.Range("A1").CurrentRegion.Resize(1)

Set rngPurchaseDataRow = wsPurchaseData.Range("A1").CurrentRegion.Resize(, 1)
For Each rngPurchaseItemsLoop In rngPurchaseItems
    If IsNumeric(rngPurchaseItemsLoop.Value) Then
        lngPurchaseItemRow = rngPurchaseItemsLoop.Row - rngPurchaseItems.Resize(1).Row + 2

    For Each rngPurchaseInfoLoop In rngPurchaseInfo

        Set rngPurchaseDataFieldLoop = rngPurchaseDataField.Find(What:=rngPurchaseInfoLoop.Value, MatchCase:=True, LookAt:=xlWhole)

        If Not rngPurchaseDataFieldLoop Is Nothing Then _
            rngPurchaseDataFieldLoop.Offset(rngPurchaseDataRow.Rows.Count).Value = rngPurchaseInfoLoop.Offset(, 1).Value

    Next rngPurchaseInfoLoop
    For Each rngPurchaseItemsFieldLoop In rngPurchaseItemsField

        Set rngPurchaseDataFieldLoop = rngPurchaseDataField.Find(What:=rngPurchaseItemsFieldLoop.Value, MatchCase:=True, LookAt:=xlWhole)

        If Not rngPurchaseDataFieldLoop Is Nothing Then _
            rngPurchaseDataFieldLoop.Offset(rngPurchaseDataRow.Rows.Count).Value = rngPurchaseItemsFieldLoop.Offset(lngPurchaseItemRow).Value

    Next rngPurchaseItemsFieldLoop

    End If

Next rngPurchaseItemsLoop

End Sub
...