返回数据最后一行vba用户表格excel

我正在做一些足球数据库,我会input数据使用用户窗体,我想从我的Excel数据库中检索数据。

我有一个名为“wedstrijden”的工作表。 此工作表包含date,HomeTeam,AwayTeam,HomeScore,AwayScore,HomeOdds和AwayOdds。

我的另一个工作表被命名为“ingevenuitslagen”。 这个工作表包含我的名为“UitslagenIngeven”的用户表单。

使用下面的代码,我能够从我的数据input到我的“wedstrijden”工作表:

Private Sub putAway_Click() Dim ingevenuitslagen As Worksheet Set ingevenuitslagen = ThisWorkbook.Sheets("wedstrijden") NextRow = ingevenuitslagen.Cells(Rows.Count, 1).End(xlUp).Row + 1 ingevenuitslagen.Cells(NextRow, 1) = CDate(date_txt.Text) ingevenuitslagen.Cells(NextRow, 2) = UitslagenIngeven.cboHomeTeam ingevenuitslagen.Cells(NextRow, 3) = UitslagenIngeven.cboAwayTeam ingevenuitslagen.Cells(NextRow, 4) = UitslagenIngeven.cboHScore ingevenuitslagen.Cells(NextRow, 5) = UitslagenIngeven.cboAScore ingevenuitslagen.Cells(NextRow, 6) = Val(UitslagenIngeven.hodds_txt.Text) ingevenuitslagen.Cells(NextRow, 7) = Val(UitslagenIngeven.aodds_txt.Text) End Sub 

但是现在我想使用名为“GetData”的button将最后一行(工作表“wedstrijden”)的值返回给我的用户表单,但我不知道如何编写该button。

这个button看起来像你已经有了很多,像这样:

 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 

如何使用数据数组

放置在UserForm中以填充数据数组的代码:

 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 

打印从用户表单传递的数据数组的过程:

 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来Db_Val你正在使用的数据库(这里是DB表中的命名范围Db_Val

 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