Событие изменения полосы прокрутки по-прежнему срабатывает, даже если для Application.EnableEvents установлено значение False - PullRequest
0 голосов
/ 15 декабря 2018

Проблема в том, что Me.scrPieces.Min = frmSettings.tbxPiecesLow.Value активирует событие scrPieces_Change(), потому что значением полосы прокрутки по умолчанию, вероятно, является установленный минимум полосы прокрутки.Таким образом, изменение минимального значения полосы прокрутки часто приводит к сдвигу в значении, что вызывает событие изменения полосы прокрутки.Я думаю отключить активацию событий, используя Application.EnableEvents в событии UserForm_Initialize().

Но, несмотря на наличие Application.EnableEvents = False, событие scrPiecesChange() все равно продолжает срабатывать.

Private Sub UserForm_Initialize()
Application.EnableEvents = False

'scrPieces
Me.scrPieces.Min = frmSettings.tbxPiecesLow.Value
Me.scrPieces.Max = frmSettings.tbxPiecesHigh.Value
Me.scrPieces.SmallChange = Application.WorksheetFunction.RoundUp((frmSettings.tbxPiecesHigh.Value - frmSettings.tbxPiecesLow.Value) / 40, 0)
Me.scrPieces.LargeChange = Application.WorksheetFunction.RoundUp((frmSettings.tbxPiecesHigh.Value - frmSettings.tbxPiecesLow.Value) / 8, 0)

Application.EnableEvents = True
End Sub

Событие изменения полосы прокрутки:

Private Sub scrPieces_Change()
i = Me.scrPieces.Min
j = 0

Me.tbxPiecesD = Me.scrPieces.Value

Do While i <= Me.scrPieces.Max
    ThisWorkbook.Worksheets("Simulation-Chart").Cells(2 + j, 1) = i
    ThisWorkbook.Worksheets("Simulation-Chart").Cells(2 + j, 2) = (CostPerPiece * (Me.scrFoilMarkup.Value / BigNum) + LaborCostPerPiece * (Me.scrLaborMarkup.Value / BigNum)) * (Me.scrQuoteMarkup.Value / BigNum)
    i = i + (Me.scrPieces.Max - Me.scrPieces.Min) / 10
    j = j + 1
Loop

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