我正在寻找工作日志的代码。共有3列:日期,公司和订购的产品。
我想创建一个带有每列输入框的表单,您可以在其中键入相应的信息。我无法找到下一个空单元格,然后使用输入框设置其值。它看起来就像附上的照片。
答案 0 :(得分:1)
Public Function startRow() As Integer
startRow = 2
End Function
startRow是我在每个数据表中都有一个函数来忽略标题,有时也是UI元素,并使用空表格。
Private Function LastRow() As Integer
Dim rangeObj As Range
Set rangeObj = Tabelle3.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
If rangeObj Is Nothing Then
LastRow = startRow
ElseIf rangeObj.Row < startRow Then
LastRow = startRow
Else
LastRow = rangeObj.Row
End If
End Function
此函数返回上次使用的行的编号,在知道此行之后,可以在其下面插入数据。 If-Elseif-Else适用于仅包含columntitle的空床单和床单
答案 1 :(得分:0)
该代码有效,但每次重新运行代码时,它都会覆盖我在上一次输入的值,即每次将值写入第2行,而不是下降到下一行并在那里写入
答案 2 :(得分:0)
试试这个:
Enum columnNumbers
colDate = 1
colCompany
colProduct
End Enum
Private Sub CommandButton1_Click()
Dim nextRow As Integer
Dim ws As Worksheet
Set ws = ActiveSheet
nextRow = ws.Cells(ws.Rows.Count, colDate).End(xlUp).Row + 1
ws.Cells(nextRow, colDate) = InputBox("Enter date value", "Date", Date)
ws.Cells(nextRow, colCompany) = InputBox("Enter company name", "Company")
ws.Cells(nextRow, colProduct) = InputBox("Enter product details", "Product")
End Sub
假设您的三列是连续的,请将列号分配给第一个枚举值(例如,如果日期列为E,则设置colDate = 5),随后的枚举变量将自动递增1(因此colCompany = colDate + 1等。)
然后使用输入框捕获值。