добавление нескольких строк в таблицу - PullRequest
0 голосов
/ 04 февраля 2019

data entry user form

Номер документа должен быть автоматическим серийным номером (пример: XX-0000001)

Следующие значения текстового поля должны быть добавлены с автоматическим серийным номером(см. вышеупомянутый пример) каждый раз

textbox3, textbox4, textbox5, textbox6, textbox7, textbox8 (это должно быть 1-й строкой) textbox9, textbox10, textbox11, textbox12, textbox13, textbox14 (это должно быть 2-й строкой)

, если значения в текстовом поле 2-й строки пустые (не следует добавлять в таблицу "Table9")

Этот код я использую на данный момент.

Private Sub CommandButton2_Click()

'SETUP VARIABLE FOR THE FORM Application.ScreenUpdating = False
    'SETUP WHICH FILE TO DATA RECORD Dim Sheet3 As Worksheet Dim WB As Workbook
    Set WB = Workbooks.Open("F:\My DAFM Project_v1\DATA ENTRY FILES (RECORDS)\PPE_TRACKER.xlsx")
    Set Sheet3 = WB.Worksheets("PPE Data")

'FIND THE EMPTY ROW TO ENTER USERFORM DATA
    Dim rng As Range
    Set rng = Sheets("PPE Data").ListObjects("Table9").ListRows.Add 'PPE DATA ENTRY TABLE

Dim lastrow As Long lastrow = rng.Find(what:="*", _ after:=rng.Cells(1), _ lookat:=xlPart, _ searchorder:=xlByRows, _ searchdirection:=xlPrevious, _ MatchCase:=False).Row

    'ADD ROW ITEMS FOR THE DOCUMENT WITH LINE NUMBER #1
    With rng
        rng.Parent.Cells(lastrow + 1, 1).Value = TextBox2.Value 'DATE
        rng.Parent.Cells(lastrow + 1, 2).Value = TextBox1.Value 'DOC.NUMBER
        rng.Parent.Cells(lastrow + 1, 3).Value = TextBox3.Value   'PPE CODE
        rng.Parent.Cells(lastrow + 1, 4).Value = TextBox6.Value   'DESCRIPTION
        rng.Parent.Cells(lastrow + 1, 5).Value = TextBox35.Value   'CATEGORY
        rng.Parent.Cells(lastrow + 1, 6).Value = ComboBox1.Value  'LOCATION/HUB
        rng.Parent.Cells(lastrow + 1, 7).Value = TextBox4.Value   'QTY
        rng.Parent.Cells(lastrow + 1, 8).Value = TextBox5.Value   'UOM
        rng.Parent.Cells(lastrow + 1, 9).Value = TextBox28.Value  'REQUESTER SAP ID
        rng.Parent.Cells(lastrow + 1, 10).Value = TextBox29.Value  'REQUESTER NAME
        rng.Parent.Cells(lastrow + 1, 11).Value = TextBox30.Value  'REQUESTER DEPARTMENT
        rng.Parent.Cells(lastrow + 1, 12).Value = TextBox31.Value 'REQUESTER LOCATION
        rng.Parent.Cells(lastrow + 1, 13).Value = TextBox32.Value 'STOREMAN SAP ID
        rng.Parent.Cells(lastrow + 1, 14).Value = TextBox33.Value 'STOREMAN NAME
        rng.Parent.Cells(lastrow + 1, 15).Value = TextBox7.Value  'LINE ITEM REMARKS
    End With

    'ADD ROW ITEMS FOR THE DOCUMENT WITH LINE NUMBER #2
    'If TextBox8.Value = True Then
        rng.Parent.Cells(lastrow + 2, 1).Value = TextBox2.Value 'DATE
        rng.Parent.Cells(lastrow + 2, 2).Value = TextBox1.Value 'DOC.NUMBER
        rng.Parent.Cells(lastrow + 2, 3).Value = TextBox8.Value   'PPE CODE
        rng.Parent.Cells(lastrow + 2, 4).Value = TextBox11.Value   'DESCRIPTION
        rng.Parent.Cells(lastrow + 2, 5).Value = TextBox36.Value   'CATEGORY
        rng.Parent.Cells(lastrow + 2, 6).Value = ComboBox1.Value  'LOCATION/HUB
        rng.Parent.Cells(lastrow + 2, 7).Value = TextBox9.Value   'QTY
        rng.Parent.Cells(lastrow + 2, 8).Value = TextBox10.Value   'UOM
        rng.Parent.Cells(lastrow + 2, 9).Value = TextBox28.Value  'REQUESTER SAP ID
        rng.Parent.Cells(lastrow + 2, 10).Value = TextBox29.Value  'REQUESTER NAME
        rng.Parent.Cells(lastrow + 2, 11).Value = TextBox30.Value  'REQUESTER DEPARTMENT
        rng.Parent.Cells(lastrow + 2, 12).Value = TextBox31.Value 'REQUESTER LOCATION
        rng.Parent.Cells(lastrow + 2, 13).Value = TextBox32.Value 'STOREMAN SAP ID
        rng.Parent.Cells(lastrow + 2, 14).Value = TextBox33.Value 'STOREMAN NAME
        rng.Parent.Cells(lastrow + 2, 15).Value = TextBox12.Value  'LINE ITEM REMARKS
    'End If



 WB.Close True   'AFTER ENTER DATA INTHE USERFORM RESETING IT  Unload Me  MsgBox "Record Updated Successfully"    UF1.Show   End Sub
    Private Sub CommandButton3_Click() 'SETUP FOR RESET BUTTON Unload Me UF1.Show

End Sub

Private Sub CommandButton4_Click() 'SETUP FOR CLOSE BUTTON Unload Me

End Sub

Private Sub UserForm_Initialize() 'SETUP FOR AUTOMATIC SERIAL NUMBER FOR THE FORM Application.ScreenUpdating = False
    Dim iRow As Long
    Dim WB As Workbook
    Set WB = Workbooks.Open("F:\My DAFM Project_v1\DATA ENTRY FILES (RECORDS)\PPE_TRACKER.xlsx")
    Dim Sheet3 As Worksheet
    Set Sheet3 = WB.Worksheets("PPE Data")

    With TextBox1
        .Value = Format(Val(Sheets("PPE Data").Range("B" & Rows.Count).End(xlUp).Row) + 1, "PP-000000")
        '.Value = "C" & Format(Cells(Rows.Count, 1).End(xlUp).Row + 1, "000000") & "ID"
        .Enabled = False
    End With

    'ADDING LOCATION DETAILS TO COMBOBOX
    With ComboBox1
    .AddItem "TERMINAL - 1"
    .AddItem "TERMINAL - 2"
    .AddItem "TERMINAL - 3"
    .AddItem "CCD"
    .AddItem "CMT"
    .AddItem "ACT"

    End With

    WB.Close False
     End Sub Private Sub UserForm_Activate() 'SETUP FOR COMPUTER DATE FOR THE DATA ENTRY FORM TextBox2.Text = Format(Now(), "DD/MM/YYYY")

End Sub

1 Ответ

0 голосов
/ 05 февраля 2019

Если вы переименуете текстовые поля в «таблице» вашей формы в (например, «PPE_CD_1», «PPE_CD_2» и т. Д., «QTY_1», «QTY_2» и т. Д., То вы можете использовать цикл для заполнения листа, используя, например, Me.Controls ("PPE_" & x). Значение, где x - ваш счетчик цикла.

К вашему сведению, вам также следует переименовать все остальные текстовые поля, не являющиеся таблицами, чтобы дать им значимые имена.

Код структуры:

Option Explicit

Private Sub CommandButton2_Click()

    Dim WB As Workbook, Sheet3 As Worksheet, i As Long

    Set WB = Workbooks.Open("F:\My DAFM Project_v1\DATA ENTRY FILES (RECORDS)\PPE_TRACKER.xlsx")
    Set Sheet3 = WB.Worksheets("PPE Data")


    Dim rng As Range, lo As ListObject
    Set lo = Sheet3.ListObjects("Table9") '<< suggest editing to a meaningful name...


    For i = 1 To 5
        If Me.Controls("PPE_CD_" & i).Value <> "" Then
            Set rng = lo.ListRows.Add()
            With rng
                .Cells(1).Value = TextBox2.Value 'DATE
                .Cells(2).Value = TextBox1.Value 'DOC.NUMBER
                'reference table textboxes by their names
                .Cells(3).Value = Me.Controls("PPE_CD_" & i).Value
                'etc for other textboxes in your table
                'continue with non-table textboxes
                'etc
            End With
        End If
    Next i
    WB.Close True
    MsgBox "Record Updated Successfully"

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...