Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 使用FOR/NEXT和IF/THEN语句在excel用户窗体之间复制文本框值_Vba_Excel - Fatal编程技术网

Vba 使用FOR/NEXT和IF/THEN语句在excel用户窗体之间复制文本框值

Vba 使用FOR/NEXT和IF/THEN语句在excel用户窗体之间复制文本框值,vba,excel,Vba,Excel,免责声明:我还是Excel VBA新手 我到处寻找,但似乎找不到解决问题的办法 我正试图通过使用几个用户表单和宏来简化数据输入过程,这将使大部分过程自动化。通过搜索这个网站,我得到了很多帮助,但我认为是时候提交一个问题了 本质上,我希望这段代码能够循环遍历文本框,并根据特定条件检查一个用户表单(QAResults)中的值,当满足条件时,我希望它将该文本框与第二个用户表单(NewEntryUserForm)中的另一个文本框进行比较,并将一些文本框值从QAResults复制到NewEntryUser

免责声明:我还是Excel VBA新手

我到处寻找,但似乎找不到解决问题的办法

我正试图通过使用几个用户表单和宏来简化数据输入过程,这将使大部分过程自动化。通过搜索这个网站,我得到了很多帮助,但我认为是时候提交一个问题了

本质上,我希望这段代码能够循环遍历文本框,并根据特定条件检查一个用户表单(QAResults)中的值,当满足条件时,我希望它将该文本框与第二个用户表单(NewEntryUserForm)中的另一个文本框进行比较,并将一些文本框值从QAResults复制到NewEntryUserForm。我认为问题在于我如何尝试使用FOR和NEXT循环遍历userform文本框

我不确定我的解释是否有意义,但也许代码将有助于显示我正在尝试做什么。我没有得到任何错误,但它没有做我认为它应该做的事情。如有任何建议,将不胜感激

Private Sub RetrieveLabComments_Click()

Dim i As Integer
Dim y As Integer
Dim ufm As UserForm
Dim qa As UserForm

For i = 1 To 3

Set qa = QAResults
    If qa.Controls("TC" & i & "_DN_FQA").Value <> "" And _
        qa.Controls("TC" & i & "_RLOG_FQA").Value <> "NA" And _
        qa.Controls("TC" & i & "_RLOG_FQA").Value > qa.Controls("TC" & i & _
              "_327_FQA").Value Then

        For y = 1 To 14
        Set ufm = NewEntryUserForm
        Set qa = QAResults
            If qa.Controls("TC" & i & "_DN_FQA").Value = ufm.Controls("CN" _ 
                & y).Value Then
                    If ufm.Controls("DT" & y).Value = "LD" Then
                        ufm.Controls("QAY" & y & "A").Value = "ILN"
                            If ufm.Controls("DT " & y).Value = "FD" Then
                                ufm.Controls("QAYF" & y & "B").Value = 
                                qa.Controls("TC" & i & "_RLOG_FQA").Value _
                                & ">" & qa.Controls("TC" & i & _
                                "_327_FQA").Value
                            End If
                    End If
           End If
        Next y
    End If


Next i

If MsgBox("Data retrieved!", vbOKOnly, "Incoming Message...") Then
End If

End Sub
Private Sub RetrieveLabComments\u Click()
作为整数的Dim i
Dim y作为整数
Dim ufm作为UserForm
dimqa作为用户表单
对于i=1到3
设置qa=qa结果
如果质量保证控制(“TC”&i&“DN”\U FQA”)。值“”和_
质量保证控制(“TC”&i&“FQA”)。值“NA”和_
质量保证控制(“TC”&i&“&U RLOG\U FQA”).Value>qa.Controls(“TC”&i&_
“_327_FQA”)。那么
对于y=1到14
Set ufm=NewEntryUserForm
设置qa=qa结果
如果qa.Controls(“TC”&i&“\U DN\U FQA”).Value=ufm.Controls(“CN”\U
&那么你的价值呢
如果ufm.Controls(“DT”&y).Value=“LD”,则
ufm.Controls(“QAY”&y&“A”).Value=“ILN”
如果ufm.控制(“DT”&y).Value=“FD”,则
ufm.控件(“QAYF”&y&“B”)。值=
质量保证控制(“TC”和“i&“日志”和“FQA”)值_
&“>”和质量保证控制(“TC”&i&_
“_327_FQA”)。值
如果结束
如果结束
如果结束
下一个y
如果结束
接下来我
如果MsgBox(“已检索数据!”,vbOKOnly,“传入消息…”),则
如果结束
端接头

我考虑过使用
来解决这个问题,但是我不知道如何使用
文本框的数量来解决这个问题


在对我的代码进行了更多的修改之后,我意识到错误不在我的代码中,而是在
文本框的内容中。换句话说,我犯了一个愚蠢的错误,代码运行得很好。因此,如果将来有人遇到这种情况,此代码是一种通过嵌套的
if-Then
语句在多个
userforms
上的特定
textbox
循环
的方法。我确信有更好的方法来编写此代码,但最终它对我有效。

我研究了如何使用
来解决此问题,但我不知道如何使用我的
用户表单中的
文本框的数量


在对我的代码进行了更多的修改之后,我意识到错误不在我的代码中,而是在
文本框的内容中。换句话说,我犯了一个愚蠢的错误,代码运行得很好。因此,如果将来有人遇到这种情况,此代码是一种通过嵌套的
if-Then
语句在多个
userforms
上的特定
textbox
循环
的方法。我确信有更好的方法来编写此代码,但最终它对我有效。

您可以通过所有控件来为每个控件编写
。应该会给你一个方法。谢谢@TrevorD,我会查出来的。你可以通过所有的控件来代替
。应该会给你一个方法。谢谢@TrevorD,我来看看。