Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查文本框是否包含vba用户表单中的信息(不像看上去那么简单…)_Vba_Excel - Fatal编程技术网

检查文本框是否包含vba用户表单中的信息(不像看上去那么简单…)

检查文本框是否包含vba用户表单中的信息(不像看上去那么简单…),vba,excel,Vba,Excel,我有一个宏,我用它在工作中打印标签,我用一个Userform输入所需的信息,但我似乎找不到一条需要简化的信息 我有一个名为ID1到ID16的文本框列表。我需要: 1验证每个文本框是否包含某些内容 2如果该文本框确实包含某些内容,请将其内容写在我工作表的单元格中 如果前3个文本框包含一个数字,我需要在工作表的列表中转换这3个数字。如果包含6、8或13个数字,则相同 谢谢 您可以执行以下操作: Dim txt As String For i = 1 To 16 txt = Controls(

我有一个宏,我用它在工作中打印标签,我用一个Userform输入所需的信息,但我似乎找不到一条需要简化的信息

我有一个名为ID1到ID16的文本框列表。我需要:

1验证每个文本框是否包含某些内容

2如果该文本框确实包含某些内容,请将其内容写在我工作表的单元格中

如果前3个文本框包含一个数字,我需要在工作表的列表中转换这3个数字。如果包含6、8或13个数字,则相同


谢谢

您可以执行以下操作:

Dim txt As String
For i = 1 To 16
    txt = Controls("ID" & i).Text
    If txt <> vbNullString Then
        ' Whatever you want to do with (txt)
    End If
Next i

祝你好运

像这样的东西怎么样:

Dim i As Long
Dim ws As Worksheet
Dim frmControl As Control

Set ws = ThisWorkbook.Worksheets(1)

ws.Cells(1, 1).Value2 = "Name"
ws.Cells(1, 2).Value2 = "vbString"
ws.Cells(1, 3).Value2 = "TypeName"
ws.Cells(1, 4).Value2 = "Value"

i = 2
For Each frmControl In UserForm1.Controls
    ws.Cells(i, 1).Value2 = frmControl.Name
    ws.Cells(i, 2).Value2 = VarType(frmControl.Object) = vbString
    ws.Cells(i, 3).Value2 = TypeName(frmControl.Object)
    If TypeName(frmControl.Object) = "IMdcText" Then
        Sheet1.Cells(i, 4).Value2 = frmControl.Text
    Else
        Sheet1.Cells(i, 4).Value2 = "not a text box"
    End If
    i = i + 1
Next frmControl

显然,这比你需要的要详细一点。然而,这只是为了您的理解,可以很容易地调整以满足您的需要。

您是否总是先填写文本框1,然后填写文本框2,然后填写文本框3等?是否每个文本框都有一个特定的单元格连接到它,或者它是A1->A16?如果是ID1.Text vbNullString,那么。。。你有什么代码?我想做的基本上是I=1到16,如果IDi.text=then…但我不知道如何表述,因为vba不识别IDi.text…每个文本框都有一个函数还是有16个相等的文本框?如果它们都相等,并且只生成16个不同的数据集,那么您也可以使用一个文本框和多行,然后在换行符上拆分字符串,这就是具有ID值的数组