Forms 使用excel vba验证用户表单数据

Forms 使用excel vba验证用户表单数据,forms,excel,validation,vba,Forms,Excel,Validation,Vba,我正在编写代码,通过用户表单填充单元格。我需要检查数据是否介于0和1之间,并提示用户输入正确的数据 Private Sub TextBox1_Change() wt = TextBox1.Value If wt >= 0 And wt <= 1 Then Range("Wt!B2").Value = wt Else MsgBox "Enter a number between 0 and 1" End If End Sub Priva

我正在编写代码,通过用户表单填充单元格。我需要检查数据是否介于0和1之间,并提示用户输入正确的数据

Private Sub TextBox1_Change()
wt = TextBox1.Value
If wt >= 0 And wt <= 1 Then

        Range("Wt!B2").Value = wt

 Else

         MsgBox "Enter a number between 0 and 1"

 End If
 End Sub
Private子文本框1_Change()
wt=TextBox1.Value

如果wt>=0且wt很多选项。这取决于你的个人喜好

按下无效键后立即出现错误,您是否感到恼火? 我认为这是好行为。

清除文本框时出现错误,您是否感到恼火? 试一试


如果wt>=0且wt则修改后的代码如下所示

Dim flag As Integer
Private Sub CommandButton2_Click()

  If flag = 1 Then

      MsgBox "Enter values between 0 and 1"
  Else
    Range("Wt!B2").Value = TextBox1.Value
    Unload Me
  End If
End Sub


Private Sub TextBox1_Change()
 Dim wt As Double, new_value As Double
 TextBox1.SetFocus
If IsNumeric(TextBox1.Value) Then
    new_value = CDbl(TextBox1.Value)
Else
    new_value = 0
End If
wt = new_value
DataValidate (wt)
End Sub

Sub DataValidate(wt)

If wt >= 0 And wt <= 1 Then

   'do nothing

Else
   flag = 1

End If
End Sub
Dim标志为整数
私有子命令按钮2_单击()
如果flag=1,则
MsgBox“输入介于0和1之间的值”
其他的
范围(“Wt!B2”).Value=TextBox1.Value
卸下我
如果结束
端接头
专用子文本框1_Change()
将wt变暗为双精度,将新的_值变为双精度
TextBox1.SetFocus
如果是数字(TextBox1.Value),则
新值=CDbl(TextBox1.value)
其他的
新值=0
如果结束
wt=新的_值
数据验证(wt)
端接头
子数据验证(wt)

如果wt>=0,wt感谢您的回答。我已经修改了代码并使用了一个按钮。基本上,问题是由于不正确的格式,因为我声明wt为double,并从文本框中读取。我将修改后的代码发布在下面。它很好用。我还把它扩展到了一系列的细胞。很高兴看到它。我真的没有注意到0>谢谢@这句话。我试试看。
Dim flag As Integer
Private Sub CommandButton2_Click()

  If flag = 1 Then

      MsgBox "Enter values between 0 and 1"
  Else
    Range("Wt!B2").Value = TextBox1.Value
    Unload Me
  End If
End Sub


Private Sub TextBox1_Change()
 Dim wt As Double, new_value As Double
 TextBox1.SetFocus
If IsNumeric(TextBox1.Value) Then
    new_value = CDbl(TextBox1.Value)
Else
    new_value = 0
End If
wt = new_value
DataValidate (wt)
End Sub

Sub DataValidate(wt)

If wt >= 0 And wt <= 1 Then

   'do nothing

Else
   flag = 1

End If
End Sub