我有一些我在VBA中使用的代码,我通过VBA表单将数据输入excel表格,这将同时填充Excel工作表的垂直和水平,但每次我输入在表单中提交之前,它会跳到下一列和行而没有完整输入单词。我该如何解决这个问题。
Private Sub txtLocation_Change()
Dim ws As Worksheet
Set ws = Worksheets("Location")
Dim newRow As Long
newRow = Application.WorksheetFunction.CountA(ws.Range("A:A")) + 1
newCol = Application.WorksheetFunction.CountA(ws.Range("B:H")) + 1
ws.Cells(newRow, 1).Value = Me.txtLocation.Value
ws.Cells(1, newRow).Value = Me.txtLocation.Value
End Sub
这就是出现的内容
答案 0 :(得分:0)
该函数使用CountA
函数计算存在的行数,并在最后一行之后添加一个值。
下次执行该函数时,CountA
将再计算一行并处理下一行。
也许你想在打开表单时只计算一次行数,只要表单打开就可以使用该数字。
答案 1 :(得分:0)
您正在使用Change
事件,每次对文本框进行少量更改时都会触发该事件。
相反,请考虑使用AfterUpdate
事件,一旦您离开现场就会触发事件 - 即完成输入并继续前进。
Private Sub
的 txtLocation_AfterUpdate()
强>
Dim ws As Worksheet
Set ws = Worksheets("Location")
Dim newRow As Long
newRow = Application.WorksheetFunction.CountA(ws.Range("A:A")) + 1
newCol = Application.WorksheetFunction.CountA(ws.Range("B:H")) + 1
ws.Cells(newRow, 1).Value = Me.txtLocation.Value
ws.Cells(1, newRow).Value = Me.txtLocation.Value
End Sub