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

时间:2017-07-05 17:31:27

标签: excel vba excel-vba

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

我经常搜索,但似乎无法找到解决问题的方法。

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

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

我不确定我的解释是否有意义但是代码可能有助于展示我尝试做的事情。我没有收到任何错误,但它没有做我认为它应该做的事情。任何建议将不胜感激。

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

1 个答案:

答案 0 :(得分:0)

我查看了使用For Each解决此问题,但我无法弄清楚如何使用我textboxesuserform的{​​{1}}个数。

在弄乱了我的代码后,我意识到错误不在我的代码中,而是在textboxes的内容中。换句话说,这是我的一个愚蠢的错误,代码工作正常。因此,如果将来有人遇到此问题,则此代码可以通过嵌套loop语句在多个textboxes上通过特定userforms进行If Then。我确信有更好的方法来编写这段代码,但最终它对我有用。