Excel 将数据输入工作表的命令按钮
我希望你们假期后都过得很好。我有个小问题。我创建了一个包含多个条目的用户表单,用户可以将数据输入到工作表中,但是,设置命令按钮将数据输入到工作表中有点困难 守则:Excel 将数据输入工作表的命令按钮,excel,vba,Excel,Vba,我希望你们假期后都过得很好。我有个小问题。我创建了一个包含多个条目的用户表单,用户可以将数据输入到工作表中,但是,设置命令按钮将数据输入到工作表中有点困难 守则: Private Sub cmdAdd_Click() 'Copy input values to sheet. Dim rw As Integer Dim ws As Worksheet Set ws = Worksheets("Sheet1") lRow = ws.Cells(Rows.Count, 1).End(xlUp).Off
Private Sub cmdAdd_Click()
'Copy input values to sheet.
Dim rw As Integer
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
With ws
.Cells(3Row, 3).Value = Me.txtDate.Value
.Cells(ERow, 4).Value = Me.cboType.Value
.Cells(FRow, 5).Value = Me.cboDesciption.Value
.Cells(GRow, 6).Value = Me.txtIncomeAmount.Value
.Cells(HRow, 7).Value = Me.txtExpensesAmount.Value
.Cells(IRow, 7).Value = Me.txtComment.Value
End With
'Clear Input Controls.
Me.txtDate = ""
Me.cboType = ""
Me.cboDesciption = ""
Me.txtIncomeAmount = ""
Me.txtExpensesAmount = ""
Me.txtComment = ""
我几乎没有编码知识,到目前为止,我一直在网上学习很多不同的教程。任何帮助或指导都将不胜感激。:)提前谢谢 使用
lRow
作为.Cells()
参数的行引用。试试下面的潜艇
Private Sub cmdAdd_Click()
'Copy input values to sheet.
Dim rw As Integer
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
With ws
.Cells(lRow, 3) = Me.txtDate
.Cells(lRow, 4) = Me.cboType
.Cells(lRow, 5) = Me.cboDesciption
.Cells(lRow, 6) = Me.txtIncomeAmount
.Cells(lRow, 7) = Me.txtExpensesAmount
.Cells(lRow, 8) = Me.txtComment
End With
'Clear Input Controls.
Me.txtDate = ""
Me.cboType = ""
Me.cboDesciption = ""
Me.txtIncomeAmount = ""
Me.txtExpensesAmount = ""
Me.txtComment = ""
End Sub
#EIDT
对于表格,您需要找到特定列的最后一个空单元格。根据附件,您需要找到B列
表示日期
列的最后一个空单元格。因此,请使用以下代码为您的工作表工作
Private Sub cmdAdd_Click()
'Copy input values to sheet.
Dim rw As Integer
Dim ws As Worksheet
Dim lrow As Long
Dim LO As ListObject
Dim LEO As Range
Set ws = Worksheets("2020_Data")
Set LO = ws.ListObjects("Table2")
'lrow = ws.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Row
With LO.Range.Columns(2)
Set LEO = .Find(what:="", after:=.Cells(1), LookIn:=xlValues, _
searchorder:=xlByRows, searchdirection:=xlNext)
If Not LEO Is Nothing Then
lrow = LEO.Row
' MsgBox LEO.Row 'First empty row at column B
End If
End With
'rw = ws.Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
With ws
.Cells(lrow, "B") = Me.txtDate
.Cells(lrow, "E") = Me.cboType
.Cells(lrow, "F") = Me.cboDesciption
.Cells(lrow, "G") = Me.txtIncomeAmount
.Cells(lrow, "H") = Me.txtExpensesAmount
.Cells(lrow, "I") = Me.txtComment
End With
'Clear Input Controls.
Me.txtDate = ""
Me.cboType = ""
Me.cboDesciption = ""
Me.txtIncomeAmount = ""
Me.txtExpensesAmount = ""
Me.txtComment = ""
End Sub
你想在这里干什么
.Cells(3Row,3)
-3Row
应该是该行的数值,而不是其他数值。您的代码哪里有问题?要指定单元格,请使用单元格([行],[列])语法。因此.Cells(lRow,3).Value=Me.txtDate.Value。这将把C列中的日期(由其编号3指示)放在代码标识为lRow的最后一行。在代码表顶部添加Option Explicit。宣布暗淡的lRow为长。rw似乎是多余的。请注意,lRow由第1列(=A)的长度决定,但新行不会写入第A列。您好,Harun24HR,谢谢您的回答!!我已将您的代码复制到工作表中,但是,出于某种原因,我收到了一条“运行时错误9,下标超出范围”的消息。您对此有什么建议吗?对不起,这是一条“Set ws=Worksheets”(“Sheet1”)。我刚刚将代码运行到我的pc上,发现没有问题。是否有名为Sheet1的工作表?检查工作簿中的工作表名称。哦,我知道我错在哪里了。哈哈。。。。。谢谢虽然那个错误已经消失了,但是现在数据并没有被输入到工作表中:(@new11)你能通过google drive或dropbox共享你的示例工作簿并在这里放置链接进行查看吗?代码应该对我有用。