Как загрузить определенные c записей в пользовательскую форму из рабочего листа (и просматривать между ними)? - PullRequest
0 голосов
/ 20 февраля 2020

Моя рабочая таблица имеет 2 пользовательских формы. Один для ввода новых данных в лист, а другой для просмотра указанных записей c, показывающий только несколько фрагментов, чтобы пользователь мог подтвердить, что он имеет право на загрузку в PDF.

Data form

Мне нужна вторая пользовательская форма (выше), чтобы загрузить самую последнюю запись, где значение в столбце (K) равно «да». А затем отобразите числа txtdossier (D), txtdate (A) и txtcontainer (C). А затем либо вручную введите номер txtDossier и покажите соответствующую информацию, либо сможете просматривать записи с помощью пред / след.

Каков наилучший способ не только показать запись при выполнении условия в столбце K, но и выполнить корректировку при добавлении новых записей на лист.

Единственный способ, которым я знаю, как это сделать сейчас, - вручную добавлять каждую новую запись в код.

Т.е. UserForm2.txtDossier.Text = CStr(Range("c5").Value)

Пожалуйста, добавляйте комментарии, когда это возможно, мое понимание VBA все еще ниже базового c.

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

1 Ответ

0 голосов
/ 20 февраля 2020

Этот код не решит вашу проблему, но он слишком длинный, чтобы поместиться в комментарии.

Если ваша форма называется UserForm2 и содержит следующие элементы управления: txtDossier, txtDate и txtContainer, то вы можете добавить следующий код в обычный модуль.

Как сказал @Czeskleba - чтобы решить вашу проблему, мы должны написать код для вас, а не этот сайт. Посмотрите на FIND , чтобы найти записи, которые вы ищете. Excel Macro Mastery также содержит хорошие объяснения о том, как его использовать.

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
...