Установка верхнего и нижнего предела для инвентаря - PullRequest
0 голосов
/ 12 июня 2018

Так что у меня возникли проблемы с VBA.Я работал над проектом инвентаризации, и как только я собирался его завершить, мне было поручено дополнительное задание с участием VBA.Я очень неопытен с VBA, так что, надеюсь, кто-то может указать мне правильное направление.

Unfortunately, I cannot post actual pictures of the inventory sheets, so I will make a mock-up. The actual quantities of the items are in column G, starting at row 10 down to row 2084. 

Example: 2 8 4 13 29 29 38 55 8 75.

Мой клиент хочет установить верхний и нижний пределы количества запасов с помощью сценария VBA.Запрашиваемые параметры следующие:

**Low Limit:** 
IF value is 10 or less - set low limit to 10;
IF value is between 10 and 30 - set low limit to 10;
IF value is 30 or greater - set low limit to 30;

**High Limit:** 
50% more than what each value is, rounded to the nearest whole number, unless that value is 10 or below. In which case the high limit would be 15, since the low limit of those values is set to 10. 

Количество запаса, которое у меня есть в настоящее время, является начальным количеством.Эти количества будут изменены, поскольку вещи удалены / добавлены к инвентарю.Тем не менее, эти начальные величины являются тем, что будет использоваться в качестве основы для верхних / нижних пределов.Поэтому я думаю, что начальные количества должны быть сохранены в массиве, и эти начальные количества в массиве - это то, что будет использоваться для расчета верхних / нижних пределов, даже при обновлении инвентаря.Если это невозможно, я просто добавлю исходный столбец инвентаризации в электронную таблицу, но это фиксированный шаблон, поэтому они предпочли бы, чтобы я этого не делал.

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

Я знаю, что это много, но любая помощь будет признательна, так как я не знаю, с чего начать.Спасибо !!

1 Ответ

0 голосов
/ 12 июня 2018

Я считаю, что это то, что вам нужно.

Если вы хотите сохранить верхний предел на начальных значениях, вам нужно создать новый лист, например, вызвать его.Конфиг и с помощью обычной функции Excel создать верхние предельные значения.(В Sheet1 я создаю список значений ваших примеров)

=ROUND(IF(Sheet1!A1<=10; 15;Sheet1!A1*1,5);0)

Затем вам нужно скопировать эти ячейки и вставить только значения в Config вместо формул.

Здесь у вас есть код, который делает то, что выхочу.

Private Sub prcCheckLimits()
    Dim ws As Worksheet: Set ws = ThisWorkbook.ActiveSheet
    Dim wsHighLimit As Worksheet: Set wsHighLimit = ThisWorkbook.Sheets("Config")
    Dim lngRow As Long 'lastRow
    Dim i As Long

    lngRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    For i = 1 To lngRow
        With ws
            If .Cells(i, 1).value < fncLowLimit(.Cells(i, 1).value) Then
                .Cells(i, 1).Interior.ColorIndex = 3
            ElseIf .Cells(i, 1).value > wsHighLimit.Cells(i, 1).value Then
                .Cells(i, 1).Interior.ColorIndex = 37
            Else
                .Cells(i, 1).Interior.ColorIndex = 0
            End If
        End With
    Next i
End Sub

Private Function fncLowLimit(value As Long) As Long
    Dim result As Long

    If value < 30 Then
        result = 10
    Else
        result = 30
    End If

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