This button will look like a lot with what you already have, something like this :
Private Sub GetData_Click()
Dim wedstrijden As Worksheet
Set wedstrijden = ThisWorkbook.Sheets("wedstrijden")
With wedstrijden
NextRow = .Cells(.Rows.Count, 1).End(xlUp).Row
UitslagenIngeven.date_txt.Text = .Cells(NextRow, 1)
UitslagenIngeven.cboHomeTeam = .Cells(NextRow, 2)
UitslagenIngeven.cboAwayTeam = .Cells(NextRow, 3)
UitslagenIngeven.cboHScore = .Cells(NextRow, 4)
UitslagenIngeven.cboAScore = .Cells(NextRow, 5)
UitslagenIngeven.hodds_txt.Text = .Cells(NextRow, 6)
UitslagenIngeven.aodds_txt.Text = .Cells(NextRow, 7)
End With
End Sub
How to work with a Data Array
Code to place in the UserForm to fill the data array :
Public DataA() 'This line should be at the top of the module
'Code to Set the dimension of the Data array
Private Sub UserForm_Initialize()
'5 is the number of information that you want to store
Dim DataA(5,0)
'----Or
'Take the number of column of your Data Base
Dim DataA(ThisWorkbook.Sheets("DB").Range("A1").End(xlToRight).Column + 1,0)
'Rest of your code
End Sub
'Code to add a data set to the data array
Private Sub CommandButton1_Click()
UnFilter_DB 'See below procedure
DataA(1) = Now()
DataA(2) = Me.Lb_Data.Caption
DataA(3) = Me.Lb_Year.Caption
DataA(4) = Me.Lb_BL.Caption
DataA(5) = Me.Lb_Country
ReDim Preserve DataA(Lbound(DataA,1) To Ubound(DataA,1), Lbound(DataA,2) To Ubound(DataA,2)+1)
End Sub
'Code to sent the data array to the DB
Private Sub CommandButton2_Click()
ReDim Preserve DataA(Lbound(DataA,1) To Ubound(DataA,1), Lbound(DataA,2) To Ubound(DataA,2)-1)
SetData DataA
End Sub
Procedure to print the data array that you pass from the user form :
Public Sub SetData(ByVal Data_Array As Variant)
Dim DestRg As Range, _
A()
'Find the last row of your DataBase
Set DestRg = ThisWorkbook.Sheets("DB").Range("Db_Val").Cells(ThisWorkbook.Sheets("DB").Range("Db_Val").Rows.Count, 1)
'Print your array starting on the next row
DestRg.Offset(1, 0).Resize(UBound(Data_Array, 1), UBound(Data_Array, 2)).Value = Data_Array
'Set Increasing ID
ThisWorkbook.Sheets("DB").Cells(Rows.Count, 1).End(xlUp) = ThisWorkbook.Sheets("DB").Cells(Rows.Count, 1).End(xlUp).Offset(-1, 0) + 1
End Sub
Sub to unfilter the DB you are working with (Here it is the Named Range Db_Val
in DB
sheet)
Public Sub UnFilter_DB()
'Use before "print" array in sheet to unfilter DB to avoid problems (always writing on the same row if it is still filtered)
Dim ActiveS As String, CurrScreenUpdate As Boolean
CurrScreenUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
ActiveS = ActiveSheet.Name
Sheets("DB").Activate
Sheets("DB").Range("A1").Activate
Sheets("DB").ShowAllData
DoEvents
Sheets(ActiveS).Activate
Application.ScreenUpdating = CurrScreenUpdate
End Sub