Для цикла в VBA Excel макрос не работает должным образом - PullRequest
0 голосов
/ 07 февраля 2019

Я пытаюсь запустить приведенный ниже код VBA, и он работает.Однако в некоторых случаях результаты не такие, как ожидалось. Например, у меня есть столбец значений, скрипт просматривает весь столбец, выбирает наименьшее значение и добавляет +1 к выходным данным.Однако иногда он пропускает некоторые небольшие значения в этом исходном столбце и принимает более высокие значения, и я не могу понять, почему он это делает

Я приложил книгу макросов Excel здесь: https://drive.google.com/open?id=1IAHalTjWoTqRT10mgF6bu5l4VB1HgCfv

Выходной лист называется: «Цикл». Макрос можно запустить из листа: «Инструкция»

Option Explicit


Sub Loop_Forecast()


Dim Onglet_Loop As String
Dim First_Ligne, First_Col_Fct, Col_SKU, Col_Inventory, Col_Monthly_Demand, Col_Coverage As Integer
Dim i, Last_ligne, Ligne_Smallest As Long
Dim Qty_Fct_Origin, Qty_Fct_Remain, Compteur, Smallest_Coverage As Variant


'Fige l'écran pendant la suppression des lignes
Application.ScreenUpdating = False


Onglet_Loop = "Loop"
Worksheets(Onglet_Loop).Activate

First_Ligne = 3
Last_ligne = Cells(First_Ligne, 1).End(xlDown).Row

Qty_Fct_Origin = Cells(1, 2).Value
Col_SKU = 1
Col_Inventory = 2
Col_Monthly_Demand = 3
Col_Coverage = 4
First_Col_Fct = 5

Compteur = 0

Do While Compteur < Qty_Fct_Origin

        Compteur = Compteur + 1
        Smallest_Coverage = Cells(First_Ligne, Col_Coverage).Value
        Ligne_Smallest = First_Ligne

    For i = First_Ligne + 1 To Last_ligne
        If Cells(i, Col_Coverage).Value < Smallest_Coverage Then
            Smallest_Coverage = Cells(i, Col_Coverage).Value
            Ligne_Smallest = i
        End If
    Next i

        Cells(Ligne_Smallest, First_Col_Fct).Value = Cells(Ligne_Smallest, First_Col_Fct).Value + 1
Loop


'Faire plein de choses qui affectent le contenu des cellules
Application.ScreenUpdating = True


End Sub

Я приложил изображение полученного вывода.Как можно видеть, он пропускает некоторые меньшие значения, т.е. 4, которые должны быть приоритетными, а затем переходит к 5 enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...