使用VBA在Excel中创build一个表单

我正在使用VBA在Excel中创build一个表单,但是我被卡在代码中。 我需要find代码来input数据到我的工作表使用VBAforms。 这里是我正在使用的代码,但不工作..

Private Sub cmdAdd_Click() Dim LastRow As Range Dim DPDIAdhocRequestTable As ListObject With LastRow Cells(1, 2) = RequesterName.Value Cells(1, 3) = RequesterPhoneNumber.Value Cells(1, 4) = RequesterBureau.Value Cells(1, 5) = DateRequestMade.Value Cells(1, 6) = DateRequestDue.Value Cells(1, 7) = PurposeofRequest.Value Cells(1, 8) = ExpectedDataSaurce.Value Cells(1, 9) = Timeperiodofdatarequested.Value Cells(1, 10) = ReoccuringRequest.Value Cells(1, 11) = RequestNumber.Value Cells(1, 12) = AnalystAssigned.Value Cells(1, 13) = AnalystEstimatedDueDate.Value Cells(1, 14) = AnalystCompletedDate.Value Cells(1, 15) = SupervisiorName.Value End With End Sub 

你能帮我弄清楚input命令的正确代码吗?

非常感谢你的帮助。

正如@亚当说的 – 你已经创build了LastRow并没有分配给任何东西。
我猜这是你想要粘贴数据的下一行,所以它应该是一个Long保存行号而不是对单元格的实际引用。

在下面的代码中,您可以通过添加Me.来限定表单控件Me. ,例如Me.RequesterName.Value
https://msdn.microsoft.com/en-us/library/office/gg251792.aspx

 Private Sub cmdAdd_Click() Dim wrkSht As Worksheet Dim LastRow As Long 'The sheet you want the data to go into. Set wrkSht = ThisWorkbook.Worksheets("Sheet1") 'You're after the last row number, rather than referencing the range so LastRow is a Long. 'This looks for the last cell containing data in column A (the 1 in 'Cells(...)'). LastRow = wrkSht.Cells(Rows.Count, 1).End(xlUp).Row + 1 'With... End With block. Cells is preceded by a '.' notation - indicating it's referencing the 'With wkrSht'# 'https://msdn.microsoft.com/en-us/library/wc500chb.aspx With wrkSht 'Using LastRow as row number in cell reference. .Cells(LastRow, 2) = RequesterName.Value 'Before adding dates to the sheet you might want to check that the 'user entered a date and not rubbish. .Cells(LastRow, 5) = DateRequestMade.Value 'You could use CDATE to force it to a date - will try and coerce the entered text into a date. 'Note - 1 will be changed to 01/01/1900 (so will need to add extra code to check it really is a date). .Cells(LastRow, 5) = CDate(DateRequestMade.Value) End With End Sub 

第一个问题是你已经创build了一个名为LastRowRange但是没有给它分配任何东西。

 'Declaration Dim LastRow As Range 'Assigns the last row based on the last item in Column A Set LastRow = Range("A" & Rows.Count).End(xlUp).Row With LastRow ... End With 

第二个问题是With LastRow块中的一个小的语法错误。

  With LastRow Cells(x,y).Value = "Foo" End With 

应该

  With LastRow .Cells(x,y).Value = "Foo" End With 

这与LastRow.Cells(x,y).Value = "Foo"基本相同。 没有“。” 在Cells() VBA不会将With应用于该对象,并假设你的意思是ActiveSheet.Cells()