/ / Nie można zmienić wartości suwaka na 0 - excel, formularze, vba, suwak

Nie można zmienić wartości suwaka na 0 - excel, formularze, vba, suwak

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 № 1

Wł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.)

wprowadź opis obrazu tutaj

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ść):

wprowadź opis obrazu tutaj

Odznacz i przesuń do 150 (zero):

wprowadź opis obrazu tutaj