我不确定为什么设置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()
事件,而只是移至下一行。
请参考以下照片:
答案 0 :(得分:1)
每MSDN,Change
事件与滚动条的Value
相关, not 与滚动条的Max
或Min
相关。我相信您更改onChange
时得到Min
的唯一原因是因为这样做也会调整Value
的副作用。
如果要确保调用scrPieces_Change
,则实际上可以在设置Min
和Max
之后直接调用它。这只是一个常规函数,因此Call scrPieces_Change
可以正常工作。
答案 1 :(得分:0)
正如我之前在评论中所说。
使用textbox_change,如果该值超出限制,则将其设置为限制。
as_flextable(ht1)
如果在初始化中设置了此限制,请创建一个全局变量,您也可以为其分配该值。
这样,它将可以在scrPieces_Change