无法将滑块控件的值更改为0

时间:2015-06-30 02:19:31

标签: excel forms vba slider

所以我有一个带有一些滑块的表单,以及一些禁用或启用每个滑块的相应复选框。当我禁用滑块时,我想将其值更改为0,但它拒绝合作并且不会更改该值。令人沮丧的是,只要我将值设置为0以外的值,它就会改变。

我已经调试了它,看了一个滑块的Value属性更改值大于0,验证sliders数组中的控件是否与我想要的控件相对应to,验证Min属性为0,甚至将它改为荒谬的低数,因为它不具有包容性,所以我无法想象为什么它会表现出来方式。

它实际上并不是非常重要,因为滑块的值在被禁用时不会计算,但是它会让我感到害怕,所以我会这样做感谢对此的任何见解。

Private Sub UpdateSliderComponents(i As Integer)
    Dim enable As Boolean
    enable = Not daysOff(i).Value

    If Not enable Then
        sliders(i).Value = 0
    End If
    labels(i).Enabled = enable
    sliders(i).Enabled = enable
End Sub

1 个答案:

答案 0 :(得分:0)

我在这里尝试了一个简单的表格,试图复制你的案子。但它不一样,控制工作正常。

另请注意,Min和Max并不是您认为的0和100.它是值的范围。价值是另一种财产。我可以将Min设置为150,将Max设置为300.值150现在表示滑块的零点(0%),300表示在这种情况下所谓的100%。如果将Min设置为150,然后尝试将值设置为0,则会导致错误。 (运行时错误380,无法设置Value属性。无效的属性值。

enter image description here

Option Explicit

Public Sub Respond(ByRef i As Integer)
Dim enable As Boolean

Select Case i
    Case 0
        enable = False
    Case 1
        enable = True
End Select

If Not enable Then
    ScrollBar1.Value = 150 '--represents zero %
    ScrollBar1.BackColor = &H8000000F
Else
    ScrollBar1.Value = 250 '--represent some value in the range
    ScrollBar1.BackColor = &H80FF80
End If

Debug.Print ScrollBar1.Value
ScrollBar1.Enabled = enable

End Sub

勾选并滑动到250(某个值):

enter image description here

取消并滑动到150(零):

enter image description here