Mam też formularz z kilkoma suwakamijako odpowiednie pola wyboru, które wyłączają lub włączają każdy suwak. Kiedy wyłączam suwak, chcę zmienić jego wartość na 0, ale odmawia on współpracy i nie zmienia wartości. Frustrująco, dopóki ustawię wartość na coś innego niż 0, zmieni się.
Zdebugowałem to, obserwowałem suwak „s” Value
zmiana właściwości dla wartości większych niż 0, zweryfikowano, że formanty w sliders
tablica odpowiadała kontrolkom, do których zamierzałem, zweryfikowała, że Min
właściwość wynosiła 0, a nawet zmieniła ją na absurdalnie niską liczbę, poza przypadkiem, że nie obejmowała, więc nie mogę sobie wyobrazić, dlaczego tak się zachowuje.
W rzeczywistości nie jest to zbyt ważne, ponieważ wartość suwaka nie jest liczona, gdy jest wyłączona, ale to mnie wkurza, więc doceniam każdy wgląd w to.
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
Odpowiedzi:
0 dla odpowiedzi № 1Właśnie wypróbowałem tutaj prostą formę, próbując odtworzyć twoją sprawę. Ale to nie to samo i sterowanie działa dobrze.
Zauważ również, że Min i Max nie są tak naprawdę takie, jak uważasz za 0 i 100. Jest to zakres wartości. Wartość to kolejna właściwość. Mogę ustawić Min na 150, a Max na 300. Wartość 150 reprezentuje teraz punkt zerowy W tym przypadku (0 procent) suwaka i 300 reprezentuje tak zwane 100 procent. Jeśli ustawiłeś Min na 150, a następnie próbowałeś ustawić wartość na 0, spowoduje to błąd. (Błąd czasu wykonywania 380, nie można ustawić właściwości Wartość. Nieprawidłowa wartość nieruchomości.)
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
Zaznacz i przesuń do 250 (pewna wartość):
Odznacz i przesuń do 150 (zero):