VBA根据选项按钮选择更新文本框值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA根据选项按钮选择更新文本框值相关的知识,希望对你有一定的参考价值。

我正在开发一个vba excel用户表单,我遇到了一个名为“Textbox6”的文本框在某些条件到位时不会更新的点 - 就像选择了一个选项按钮。

换一种说法。如果Optionbuttton10为“仅”,则Textbox6将显示单元格D3中的值

如果“OptionButton10”为真并且“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
答案

这很难确定,但根据您的评论,您可能想要尝试这样做:

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")

*为你的选项和组合框提供适当的名称,如果你将它们命名为FooBar以及Baz,未来你可能会比使用默认名称留下它们更加困惑...

这比你必须回到表单看看OptionButton10OptionButton2的文本标签更快...

另一答案

对我有用的解决方案如下。

我使用嵌套的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

以上是关于VBA根据选项按钮选择更新文本框值的主要内容,如果未能解决你的问题,请参考以下文章

根据文本框值javascript修改complete.ly选项

如何在提交按钮上获取 amx 迭代器所有文本框值

在vba中将列与文本框值相乘

根据单选按钮选择组合(VBA Excel)用可变文本填充文本框

Access 2010 Web 数据库 - 从局部变量更新文本框值?

根据组合框选择更改文本框值