Вложено для l oop с до до VBA - PullRequest
0 голосов
/ 16 марта 2020

Вот что я пытаюсь сделать: у меня есть StockOH в столбце (D), и я хочу знать, сколько дней продаж я могу покрыть каждой суммой. Так, например, если значение stockOH в D2 больше, чем сумма значения E2: E5, но меньше суммы (E2: E6), это означает, что я могу покрыть 4 дня продаж.

Я использую Do, пока функция не вложится в a для l oop. Я не уверен, почему первый результат правильный, а следующие не

enter image description here

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

 Dim y, x, Ssellout As Double

 'loop thorugh the stock values in column D

 For y = 2 To 5

 'Get each amount of stock
  Ssellout = Cells(y, 5).Value

 x = y

 'FInd the breakout point when sum of sellout is higher than stockOH
 Do Until Cells(y, 4).Value < Ssellout

 'Add 1 to the counter in case condition is not valid
  x = x + 1

 'REport value found as a breakeven
 Cells(y, 6).Value = x

'Add another day of sales to the sum of sales
  Ssellout = Ssellout + Cells(x, 5).Value
 Loop

 MsgBox (y)

 Next
End Sub

1 Ответ

0 голосов
/ 23 марта 2020

Я наконец справился с функциями FOr L oop и Do While.

Вот код

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim x, y As Integer

Dim sellout, stock As Double

For y = 0 To 4

'Define counter for sum IMPORTANT it should be inside the for loop
sellout = 0
x = 2

Do While Cells(2 + y, 4).Value > sellout

sellout = sellout + Cells(x + y, 5).Value
Cells(2 + y, 6).Value = x - 2
x = x + 1
Loop

Next


End Sub
...