在滚动条中分配最小值会触发滚动条更改事件,但分配最大值不会

时间:2018-12-14 17:28:55

标签: excel vba excel-vba events scrollbar

我不确定为什么设置scrollbar.Min属性会在我为其分配值时触发该事件,但是scrollbar.Max属性却不会在我为其分配值时触发该事件。

使用的代码如下:

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)

当我逐步执行Me.scrPieces.Min = frmSettings.tbxPiecesLow.Value并为其分配一个值时,会触发scrPieces.Change()事件:

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

MyChart.Export Filename:=ImgName, FilterName:="GIF"
Me.imgChart.Picture = LoadPicture(ImgName)

End Sub

但是当我逐步执行Me.scrPieces.Max时,它不会激活scrPieces.Change()事件,而只是移至下一行。

请参考以下照片:

在将值分配给scrPieces.Min之后,逐步执行代码,如下所示: enter image description here

scrPieces_Change()事件将触发 enter image description here

但是,分配scrPieces.Max不会触发该事件。 enter image description here

代码将立即移至下一行,如下所示: enter image description here

2 个答案:

答案 0 :(得分:1)

MSDNChange事件与滚动条的Value相关, not 与滚动条的MaxMin相关。我相信您更改onChange时得到Min的唯一原因是因为这样做也会调整Value的副作用。

如果要确保调用scrPieces_Change,则实际上可以在设置MinMax之后直接调用它。这只是一个常规函数,因此Call scrPieces_Change可以正常工作。

答案 1 :(得分:0)

正如我之前在评论中所说。
使用textbox_change,如果该值超出限制,则将其设置为限制。


as_flextable(ht1)

如果在初始化中设置了此限制,请创建一个全局变量,您也可以为其分配该值。
这样,它将可以在scrPieces_Change

中访问