VBA文本框:在输入每个字母后,它会在输入完整单词之前跳到下一行和第二列

时间:2018-01-25 15:24:39

标签: excel vba excel-vba

我有一些我在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

这就是出现的内容

enter image description here

2 个答案:

答案 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