Vba 使用UserForm和Textbox名称作为函数的参数

Vba 使用UserForm和Textbox名称作为函数的参数,vba,excel,Vba,Excel,我有一个带有许多文本框的用户表单(描述测试参数)。我想使用函数来检查每个文本框的值是否在特定范围内。允许的值范围出现在excel工作表“T_列表”中)-每个参数都有不同的范围。如果textbox的值在该范围内,函数将返回“true”,否则将返回“false” 下面是我如何调用此函数的: g = CheckGreen(Test_Procedure, CWS1, 1) msgbox(g) 测试程序-用户名,CWS1-特定文本框的名称,1-第一个值范围(在每张表的表格中) 这是函数的代码,它不起作用

我有一个带有许多文本框的用户表单(描述测试参数)。我想使用函数来检查每个文本框的值是否在特定范围内。允许的值范围出现在excel工作表“T_列表”中)-每个参数都有不同的范围。如果textbox的值在该范围内,函数将返回“true”,否则将返回“false”

下面是我如何调用此函数的:

g = CheckGreen(Test_Procedure, CWS1, 1)
msgbox(g)
测试程序-用户名,CWS1-特定文本框的名称,1-第一个值范围(在每张表的表格中)

这是函数的代码,它不起作用,因为txtbox参数是获取单元格的值,而不是taxtbox名称。我做错了什么

Public Function CheckGreen(formName As UserForm, txtbox As MSForms.TextBox, i As Integer) As Boolean
  If formName.txtbox.Value >= Sheets("T_list").Range("T_Start").Offset(i, 0).Value And formName.txtbox.Value <= Sheets("T_list").Range("T_Start").Offset(i, 1).Value Then
formName.txtbox.BackColor = &HFF00& ' Green
Sheets("Test_Data").Range("D_Start").Offset(T_R, 8).Value = formName.txtbox.Value
CheckGreen = True
Else
formName.txtbox.BackColor = &H3535FD ' Red
Sheets("Test_Data").Range("D_Start").Offset(T_R, 8).Value = formName.txtbox.Value
CheckGreen = False
End If
End Function
此选项仍然不起作用,因为现在的值是字符串,并且IF方程不将该值识别为数字,并且始终转到“False”(即使该值在允许的范围内)


请您协助,谢谢

代码是通过将字符串值放入函数CDbl()来工作的,该函数将字符串转换为double。

可能与@Banana重复-这不是同一主题,我需要知道如何在函数中添加文本框名称作为参数。名称只是一个字符串,您可以将其作为任何其他字符串传递:
“CWS1“
,您可以按照我第一条评论中的链接中所述使用它。我已尝试将字符串放入函数参数中,但它仍然不起作用。你能帮我解释一下语法吗?这是我的代码:如果Tvalue>=工作表(“T\u列表”)。范围(“T\u开始”)。偏移量(i,0)。值和Tvalue,则函数CheckGreen(Tvalue为双精度,i为整数,单元格为字符串)为布尔值
Public Function CheckGreen1(formName As UserForm, txtbox As String, i As Integer) As Boolean
If formName.Controls(txtbox).Value >= Sheets("T_list").Range("T_Start").Offset(i, 0).Value And formName.Controls(txtbox).Value <= Sheets("T_list").Range("T_Start").Offset(i, 1).Value Then
formName.Controls(txtbox).BackColor = &HFF00& ' Green
Sheets("Test_Data").Range("D_Start").Offset(T_R, 8).Value = formName.Controls(txtbox).Value
CheckGreen1 = True
Else
formName.Controls(txtbox).BackColor = &H3535FD ' Red
Sheets("Test_Data").Range("D_Start").Offset(T_R, 8).Value = formName.Controls(txtbox).Value
CheckGreen1 = False
End If

End Function
g = CheckGreen(CWS1.Value, 1, CWS1)