Excel滑块控件:我怎样才能限制所有滑块的总和,比如100?

为了清晰起见请参阅图

滑块

我有5个variables(A,B,C,D和E),每个variables的范围可以从0到100。 我需要所有这些variables的总和为100,而不是更多,不能less。 但是,目前设置的方式,如果将variablesA从21更改为51,则总数变为130。

我怎么能这样设置,如果我改变一个variables,其他人可以自动补偿这个增加或减less,总数总是 100?

使用滑块更改事件,以便当一个滑块更改值时,其他滑块将被缩放,以使值总和为100

示例代码,使用3个滑块 – 您可以将其缩放以允许您想要的滑块数量

Private UpdateSlider As Boolean Private Sub ScaleSliders(slA As Double, ByRef slB As Double, ByRef slC As Double) Dim ScaleFactor As Double If (slB + slC) = 0 Then ScaleFactor = (100# - slA) slB = ScaleFactor / 2 slC = ScaleFactor / 2 Else ScaleFactor = (100# - slA) / (slB + slC) slB = slB * ScaleFactor slC = slC * ScaleFactor End If End Sub Private Sub ScrollBar1_Change() Dim slB As Double, slC As Double ' UpdateSlider = False If Not UpdateSlider Then slB = ScrollBar2.Value slC = ScrollBar3.Value ScaleSliders ScrollBar1.Value, slB, slC UpdateSlider = True ScrollBar2.Value = slB ScrollBar3.Value = slC UpdateSlider = False End If End Sub Private Sub ScrollBar2_Change() Dim slB As Double, slC As Double If Not UpdateSlider Then slB = ScrollBar1.Value slC = ScrollBar3.Value ScaleSliders ScrollBar2.Value, slB, slC UpdateSlider = True ScrollBar1.Value = slB ScrollBar3.Value = slC UpdateSlider = False End If End Sub Private Sub ScrollBar3_Change() Dim slB As Double, slC As Double If Not UpdateSlider Then slB = ScrollBar1.Value slC = ScrollBar2.Value ScaleSliders ScrollBar1.Value, slB, slC UpdateSlider = True ScrollBar1.Value = slB ScrollBar2.Value = slC UpdateSlider = False End If End Sub 

请注意,滑块数据types为整数,所以您可能需要允许四舍五入而不是完全相加100