我有一个包含许多文本框的用户窗体(描述测试的参数)。我想使用函数来检查每个文本框的值是否在特定范围内。允许的值范围出现在Excel工作表中#T; T_list) - 对于每个参数,存在不同的范围。如果文本框的值在范围内,则函数将返回" true"否则它将返回"假"
以下是我如何调用此函数:
g = CheckGreen(Test_Procedure, CWS1, 1)
msgbox(g)
Test_Procedure - userform的名称, CWS1 - 特定文本框的名称, 1 - 第一个值范围(在表格中eacel sheet T_list)
这是函数的代码,它不起作用,因为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
*****根据@Banana评论编辑:
这是我使用字符串选项的函数代码(根据@Banana评论):
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)
这个选项仍然不能正常工作,现在的值是字符串,而IF方程并不能将数值识别为数字,而是转向“假”&#39; False&#39; (即使该值在允许的范围内)。
请帮助,谢谢
答案 0 :(得分:0)
该代码通过将字符串值放入函数CDbl()中来工作,该函数将字符串转换为双精度。