首页 > 解决方案 > Excel VBA查找单元格的最后一行并添加数据

问题描述

我正在为用户制作一个用户表单,以便在收据中输入项目及其数量和价格,因为我想锁定整个工作表,以便我的员工无法编辑收据视图。我想要做的是当用户已经添加第一个项目(第 16 行)并想要添加另一个项目时,该项目被添加到第一个项目下方的行中(第 17 行)。我已经编写了代码,但问题是它没有检测到数据的最后一行,所以它一直覆盖第一行,即第 16 行并且不会下降到第 17 行。

有人可以帮我修复代码吗?

用户表单

excel收据视图

Private Sub btnSubmit_Click()

Dim lastRow2 As Long, m As Variant, str As String
Dim rng1, cell1 As Range

If tbQty.Value > 0 Then
    lastRow2 = ThisWorkbook.Sheets("sheet1").Range("A16" & Rows.Count).End(xlUp).Row+1
    Sheets("sheet1").Range("A" & lastRow2).Value = tbProduk.Value
    Sheets("sheet1").Range("C" & lastRow2).Value = Val(tbQty.Value)
    Sheets("sheet1").Range("D" & lastRow2).Value = Val(tbPrice.Value)
End If

tbProduk.Value = ""
tbQty.Value = ""
tbPrice.Value = ""
tbProduk.SetFocus

End Sub

标签: excelvba

解决方案


请更换:

lastRow2 = ThisWorkbook.Sheets("sheet1").Range("A16" & Rows.Count).End(xlUp).Row + 1

lastRow2 = ThisWorkbook.Sheets("sheet1").Range("A" & ThisWorkbook.Sheets("sheet1").Rows.Count).End(xlUp).Row + 1

或更好:

Dim sh as Worksheet
Set Sh = ThisWorkbook.Sheets("sheet1")
lastRow2 = Sh.Range("A" & Sh.Rows.Count).End(xlUp).Row + 1

推荐阅读