Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
Excel 如何从工作表将特定条目加载到userform(并在它们之间浏览)?_Excel_Vba_Userform_Populate - Fatal编程技术网

Excel 如何从工作表将特定条目加载到userform(并在它们之间浏览)?

Excel 如何从工作表将特定条目加载到userform(并在它们之间浏览)?,excel,vba,userform,populate,Excel,Vba,Userform,Populate,我的工作表有两个用户表单。一个用于在工作表中输入新数据,另一个用于浏览特定条目,只显示一些条目供用户确认是否有正确的条目下载到PDF 我需要第二个userform(上面)来加载最新的条目,其中(K)列中的值为“yes”。然后显示txtdosier(D)、txtdate(A)和txtcontainer编号(C)。然后手动输入txtdosier编号并显示相关信息,或者可以使用prev/next浏览条目 当K列中的条件满足时,最好的方法是不仅显示条目,而且在向工作表中添加新条目时进行调整 我现在知道

我的工作表有两个用户表单。一个用于在工作表中输入新数据,另一个用于浏览特定条目,只显示一些条目供用户确认是否有正确的条目下载到PDF

我需要第二个userform(上面)来加载最新的条目,其中(K)列中的值为“yes”。然后显示
txtdosier
(D)、
txtdate
(A)和
txtcontainer
编号(C)。然后手动输入
txtdosier
编号并显示相关信息,或者可以使用prev/next浏览条目

当K列中的条件满足时,最好的方法是不仅显示条目,而且在向工作表中添加新条目时进行调整

我现在知道的唯一方法是手动将每个新条目添加到代码中

即。
UserForm2.txtdosier.Text=CStr(范围(“c5”).Value)

请在可能的情况下添加评论,我对VBA的理解仍在基础以下

Private Sub UserForm_Initialize()

Me.txtDate.Enabled = False
Me.txtDate.BackColor = RGB(224, 224, 224)
Me.txtContainer.Enabled = False
Me.txtContainer.BackColor = RGB(224, 224, 224)

Dim LastRow As Long
Dim Doss As String
Dim Datum As String
Dim Container As String
Dim FaseJa As String

Dim ws As Worksheet
Set ws = Worksheets("Meting Fase 2 lijst")

LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

End Sub

此代码无法解决您的问题,但太长,无法放入注释中

假设您的表单名为
UserForm2
,并包含以下控件:
txtdosier
txtDate
txtContainer
,则可以将以下代码添加到普通模块中

正如@Czeskleba所说的——为了解决您的问题,我们必须为您编写代码,这不是本网站的目的。请查看以追踪您正在查找的记录。对如何使用它也有很好的解释

Public Sub Test()

    'Open first instance of form.

    Dim frm As UserForm2
    Set frm = New UserForm2

    With frm
        .Caption = "First Displayed Form"
        .txtDossier = ThisWorkbook.Worksheets("Sheet1").Range("B1")
        With .txtDate
            .Value = Format(Date, "dd-mmm-yy")
            .Enabled = False
        End With
        .txtContainer = "Some data in here"
        .Show
    End With

    'Open second instance of form.
    'If forms ShowModal property is set to TRUE then this code will run after first form is (manually) closed.
    'If ShowModal is set to FALSE then two forms will appear.

    Dim frm2 As UserForm2
    Set frm2 = New UserForm2

    With frm2
        With .txtDossier
            .BackColor = RGB(224, 224, 224)
        End With
        .Caption = "Second Displayed Form"
        .txtDate = Format(DateSerial(2019, 12, 25), "ddd dd-mmm-yy")
        .txtContainer.Enabled = False
        .Show
    End With

End Sub

你说的最新是什么意思?最后一项?即最后一排?或者有带日期或其他内容的列吗?是的,在userform1中,用户可以添加新条目。所以当他们这样做时,我希望他们能够立即返回到这个用户表单,以PDF格式下载它。工作表用
单元格(iRow,1)保存日期(和时间)。Value=Now
。日期可以在A栏找到。我真的不知道如何回答这个问题,而不是简单地为你写代码。但我要做的可能是使用.find在K列中查找yes,使用xlprevious查找最后一行的yes。然后只需分配相关值,如so
txtdosier=ws.Range(“D”&LastRowWithAYes)
等。如果数据非常庞大,可能match工作得更好,或者我可以使用公共变量和数组。如果你尝试了一些东西,但遇到了错误,我很乐意帮忙,但现在我只能写出来了