Excel滑块控件:如何将所有滑块的总数限制为100个?

| 为清楚起见,请参见图片。 我有5个变量(A,B,C,D和E),每个变量的范围从0到100。我需要所有这些变量的总和始终为100,而不是更多,更少。但是,按照目前的设置方式,如果我将变量A从21更改为51,则总数变为130。 我如何设置它,以便如果我更改一个变量,其他变量可以自动补偿该增加或减少,使得总数始终为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
请注意,滑块数据类型为整数,因此您可能需要允许舍入不等于100     

要回复问题请先登录注册