vba - 自动移动到下一个单元格

时间:2015-03-15 17:16:17

标签: vba excel-vba excel

我必须在A栏中输入许多5位数的设定数字(例如12345,23456)。

一旦我在激活单元格中输入5位数字,是否有办法自动移动到A列的下一行?

3 个答案:

答案 0 :(得分:3)

第一个格式列 A 文本

然后在工作表代码区域中输入以下事件宏

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, L2 As Long, Leftover As Long
    If Target.Count > 1 Then Exit Sub
    Set A = Range("A:A")
    If Intersect(Target, A) Is Nothing Then Exit Sub
    v = Target.Text
    L2 = Len(v) / 5
    Leftover = Len(v) - 5 * L2
    j = 1

    Application.EnableEvents = False
        For i = 1 To L2
            Target.Offset(i - 1, 0).Value = Mid(v, j, 5)
            j = j + 5
        Next i
        If Leftover = 0 Then
        Else
            Target.Offset(L2, 0).Value = Mid(v, j)
            L2 = L2 + 1
        End If
        Target.Offset(L2, 0).Select
    Application.EnableEvents = True
End Sub

然后点击 A 列中的任意位置,然后开始输入数字或字母。当您完成(或累了)触摸 Enter 键。

您的数据将以光标向下以5组向下分发在输入数据下面的第一个单元格中。

因为它是工作表代码,所以很容易安装和自动使用:

  1. 右键单击Excel窗口底部附近的选项卡名称
  2. 选择查看代码 - 这会打开一个VBE窗口
  3. 粘贴内容并关闭VBE窗口
  4. 如果您有任何疑虑,请先在试用工作表上试用。

    如果保存工作簿,宏将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除宏:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      要了解有关事件宏(工作表代码)的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/event.htm

      必须启用宏才能使其生效!

答案 1 :(得分:2)

是否可以使用userform甚至ActiveX文本框。

插入文字框

enter image description here

右键单击文本框并选择查看代码。

enter image description here

在那里使用此代码。

enter image description here

或复制并粘贴代码,确保文本框与代码中的名称相同

Private Sub TextBox1_Change()
    If Len(Me.TextBox1) = 5 Then
        Me.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) = Me.TextBox1.Value
        Me.TextBox1.Text = ""
    End If
End Sub

开始在文本框中输入,只要有5位数字,它就会将文本放入A列的第一个空单元格并清除文本框。

Enter Text Result

答案 2 :(得分:2)

这是另一个可能解决您问题的选项。

  1. 打开developer-tool-tab
  2. 在工作表的任意位置添加新文本框
  3. 双击文本框添加以下代码。
  4. Private Sub TextBox1_Change() If Len(TextBox1.Value) = 5 Then ActiveCell.Value = TextBox1.Value ActiveCell.Offset(1, 0).Activate TextBox1.Value = "" TextBox1.Activate End If End Sub

    1. 使用笔单击三角形(也在开发人员工具选项卡中)禁用设计模式。
    2. 确保您位于正确的单元格中,然后开始在文本框中输入内容。
    3. CYA Amnney