确定。我最近创建了一个Userform,允许某人输入信息,然后将其插入工作表的表格中。我的问题是插入数据的代码不会将信息插入到表的空白第一行(假设带有标题的完全空表) 这是代码:
Private Sub EnterCommand_Click()
Dim NextRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
'Check for next empty row
NextRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
'Add the data
ws.Cells(NextRow, 1).Value = WeekTextBox.Value
ws.Cells(NextRow, 2).Value = DOSTextBox.Value
ws.Cells(NextRow, 3).Value = InvTextBox.Value
ws.Cells(NextRow, 4).Value = TechComboBox.Value
ws.Cells(NextRow, 5).Value = HospComboBox.Value
ws.Cells(NextRow, 6).Value = HoursTextBox.Value
'Close
Unload Me
End Sub
不知道如何强制它使用表格上表格的初始空白行。
感谢。
答案 0 :(得分:0)
当然总有
ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Select
If ActiveCell.Row = 1 Then
ActiveCell.Offset(0, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
答案 1 :(得分:0)
您是否需要它来主动搜索下一个空行?为什么不使用变量来跟踪当前行?
dim NextRow As Long
NextRow= 1
Private Sub EnterCommand_Click()
Dim ws As Worksheet
Set ws = Worksheets("Sheet1")'Add the data
ws.Cells(NextRow, 1).Value = WeekTextBox.Value
ws.Cells(NextRow, 2).Value = DOSTextBox.Value
ws.Cells(NextRow, 3).Value = InvTextBox.Value
ws.Cells(NextRow, 4).Value = TechComboBox.Value
ws.Cells(NextRow, 5).Value = HospComboBox.Value
ws.Cells(NextRow, 6).Value = HoursTextBox.Value
NextRow = NextRow + 1
End Sub
'Close
答案 2 :(得分:0)
尝试此操作以获取最后一行:
NextRow = ws.Range("A1", ws.Range("A" & Rows.Count).End(xlUp)).Find(what:="*", after:=ws.Range("A1"), searchdirection:=xlPrevious).Offset(1,0).Row
你遇到问题是因为你正在处理 Tables
如果您的数据采用 Ranges 的形式,您的代码将有效。
这是逻辑:
ws.Range("A1",ws.Range("A" & Rows.Count).End(xlUp)) '~~> This identifies the search range
如果您的表格为空,则评估为:
Ws.Range("A1","A2") '~~> A2 because that is where the table ends, if this is Range it is A1
以上相当于:
ws.Range("A1:A2")
然后使用.Find
函数查找带条目的最后一个数据。
ws.Range("A1:A2").Find(what:="*",after:ws.Range("A1"),searchdirection:=xlPrevious)
Find
有很多论点,但在你的情况下,我们只需要上面指定的3个
它的作用是找到前一个上一个单元格,其数据引用A1
希望这会有所帮助。