Значение текстового поля обновления VBA на основе выбора кнопки выбора - PullRequest
0 голосов
/ 12 сентября 2018

Я работаю над пользовательской формой vba excel и застрял в точке, в которой текстовое поле с именем «Textbox6» не будет обновляться при определенных условиях - например, выбрана кнопка выбора или нет.

Другими словами.Если Optionbuttton10 имеет значение true «only», тогда Textbox6 отображает значение в ячейке D3

Если «OptionButton10» имеет значение true, а «Optionbutton2» имеет значение True, тогда я хочу, чтобы Textbox6 отображал ячейку E3

Этокод, который у меня есть, и он «выглядит», как будто он должен работать, но я что-то упустил.

Private Sub OptionButton10_Click()
Dim D3 As Variant
Dim E3 As Variant
D3 = Sheets("Systems").Range("D3").Value
E3 = Sheets("Systems").Range("E3").Value

If OptionButton10 = True And ComboBox2 = "Standard" Or ComboBox2 = "Scale-In" Then
TextBox6.Value = D3 'this works'
ElseIf OptionButton10 = True And OptionButton2 = True Then
TextBox6.Value = E3 'this doesn't work'
End If
 TextBox6.Text = Format(TextBox6.Value, "Percent")
End Sub

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Решение, которое сработало для меня, ниже.

Я использовал вложенный оператор If и добавил «optionbutton2 = false»

Private Sub OptionButton10_Click()
Dim D3 As Variant
Dim E3 As Variant
D3 = Sheets("Systems").Range("D3").Value
E3 = Sheets("Systems").Range("E3").Value

If ComboBox2 = "Standard" Or ComboBox2 = "Scale-In" Then
  If OptionButton10 = True And OptionButton2 = False Then
     TextBox6.Value = D3 
  ElseIf OptionButton10 = True And OptionButton2 = True Then
     TextBox6.Value = E3 
 End If
End If
TextBox6.Text = Format(TextBox6.Value, "Percent")
End Sub
0 голосов
/ 13 сентября 2018

Трудно быть уверенным, но, основываясь на ваших комментариях, вы можете попробовать это:

Private Sub OptionButton10_Click()
  Dim D3 As Variant
  Dim E3 As Variant
  D3 = Sheets("Systems").Range("D3").Value
  E3 = Sheets("Systems").Range("E3").Value

  If (OptionButton10 And Not (OptionButton2)) And (ComboBox2 = "Standard" Or ComboBox2 = "Scale-In") Then
    TextBox6.Value = D3                          'this works'
  ElseIf OptionButton10 = True And OptionButton2 = True Then
    TextBox6.Value = E3                          'this doesn't work'
  End If
  TextBox6.text = Format(TextBox6.Value, "Percent")
End Sub

или, альтернативно, это:

Private Sub OptionButton10_Click()
  Dim D3 As Variant
  Dim E3 As Variant
  D3 = Sheets("Systems").Range("D3").Value
  E3 = Sheets("Systems").Range("E3").Value

  If OptionButton10 And OptionButton2 Then
    TextBox6.Value = E3                          'this doesn't work'
  ElseIf OptionButton10 = True And (ComboBox2 = "Standard" Or ComboBox2 = "Scale-In") Then
    TextBox6.Value = D3                          'this works'
  End If
  TextBox6.text = Format(TextBox6.Value, "Percent")
End Sub

Кроме того, я бы настоятельно рекомендовал бы дать вашим кнопкам и полям (включая текстовые поля) лучшие имена. В будущем вы по достоинству оцените его, когда сможете посмотреть свой код и прочитать:

If (ProcessFoo and Not(ProcessBar)) and (Baz = "Standard" or Baz = "Scale-In")

* с соответствующими именами для ваших опций и списком, если вы назовете их Foo и Bar и Baz, в будущем вы, возможно, будете еще более запутаны, чем если вы оставите их с именами по умолчанию. ..

Это будет гораздо быстрее понять, чем возвращаться к форме, чтобы увидеть, что означают текстовые метки для OptionButton10 и OptionButton2 ...

...