Изменяйте значение в ячейке, только если выбран соответствующий OptionButton - PullRequest
1 голос
/ 22 апреля 2020

1) Таблица Excel

             A            B           C     
1    OptionButton1        0
2    OptionButton2        0
3    OptionButton3        0
4
5

2) UserForm1

Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
Sheet1.Range("B1").Value = 1
Else
Sheet1.Range("B1").Value = 0
End If
End Sub

Private Sub OptionButton2_Click()
If OptionButton2.Value = True Then
Sheet1.Range("B2").Value = 1
Else
Sheet1.Range("B2").Value = 0
End If
End Sub

Private Sub OptionButton3_Click()
If OptionButton3.Value = True Then
Sheet1.Range("B3").Value = 1
Else
Sheet1.Range("B3").Value = 0
End If
End Sub

У меня UserForm1, состоящий из трех OptionButtons.
Когда пользователь нажимает OptionButton, соответствующее значение в Column B изменяется с 0 на 1.
Все это работает так, как должно.


Теперь у меня есть проблема, например, если пользователь нажимает OptionButton1, значение в Cell B1 изменяется с 0 на 1.
Затем пользователь решает переключиться с OptionButton1 на OptionButton2.
В этот момент значение в Cell B2 изменяется с 0 на 1.
Однако в этот момент значение в Cell B1 остается 1 и не переключается обратно на 0.

Как мне изменить свой код, чтобы только значение, выбранное в OptionButtons, было изменено с 0 на 1 в Column B?

1 Ответ

0 голосов
/ 22 апреля 2020

Вам нужно будет установить другие ячейки обратно на 0, если выбран один из OptionButton.

Например, с помощью OptionButton1

Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
    Sheet1.Range("B1").Value = 1
    Sheet1.Range("B2").Value = 0
    Sheet1.Range("B3").Value = 0
Else
    Sheet1.Range("B1").Value = 0
End If
End Sub

Поскольку вы не можете «отменить выбор» кнопки опции, щелкнув по ней, предложение Else немного избыточно и в событии OptionButton1_Click.

Если вместо этого вы поймаете событие Change, вы можете оставить свой код как есть, что означает, что он будет срабатывать при каждом изменении состояния OptionButton (либо Value = True, либо Value = False. * 1016). *

Приведенный ниже код даст такой же результат, как если бы вы приняли вышеуказанное решение.

Private Sub OptionButton1_Change()
If OptionButton1.Value = True Then
    Sheet1.Range("B1").Value = 1
Else
    Sheet1.Range("B1").Value = 0
End If
End Sub

Private Sub OptionButton2_Change()
If OptionButton2.Value = True Then
    Sheet1.Range("B2").Value = 1
Else
    Sheet1.Range("B2").Value = 0
End If
End Sub

Private Sub OptionButton3_Change()
If OptionButton3.Value = True Then
    Sheet1.Range("B3").Value = 1
Else
    Sheet1.Range("B3").Value = 0
End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...