Excel VBA事件 - 在单元格中输入数据后偏移到不同的列

时间:2015-02-06 16:51:29

标签: excel vba excel-vba

我有2个表填写数据。两个数据表都是相同的维度,位于列I:X和AB:AQ(偏移19列开始 - 开始)。我想要它,这样当我在左表中的单元格中输入一个数字时,按下回车后它将向右移动19列。然后,将文本输入到右表中的活动单元格后,将19个单元格返回到左表格。

我尝试了查找this question/answer,但我无法应用它来实现它。我尝试了以下方法:

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Whoa

    Application.EnableEvents = False

    If Not Target.Cells.CountLarge > 1 Then
        If Not Intersect(Target, Columns(9)) Is Nothing Then
            Target.Offset(, 19).Select
        ElseIf Not Intersect(Target, Columns(10)) Is Nothing Then
            Target.Offset(, 19).Select
        ElseIf Not Intersect(Target, Columns(11)) Is Nothing Then
            Target.Offset(, 19).Select
        ElseIf Not Intersect(Target, Columns(12)) Is Nothing Then
            Target.Offset(, 19).Select
'etc...  
        ElseIf Not Intersect(Target, Columns(42)) Is Nothing Then
            Target.Offset(, -19).Select
        ElseIf Not Intersect(Target, Columns(43)) Is Nothing Then
            Target.Offset(, -19).Select
        End If
    End If
Letscontinue:
    Application.EnableEvents = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume Letscontinue
End Sub

由于某种原因,它不起作用。拜托,谢谢你的帮助。

作为替代方案,如果它能够识别出输入的单元格在列I:X中,并且在按下Enter键之后仅偏移19列(然后反之),这将正常工作。

第二种选择 - 如果它更容易更改 Page Up Page Down 键的功能,那也可以,也不需要检查我在的专栏。

最后,这应仅适用于特定工作表跟踪

谢谢!

1 个答案:

答案 0 :(得分:0)

这样的事情对你有用。确保代码位于“跟踪”工作表代码模块中:

enter image description here

以下是您将使用的代码:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngChange1 As Range
    Dim rngChange2 As Range

    Set rngChange1 = Range("I:X")
    Set rngChange2 = Range("AB:AQ")

    Application.EnableEvents = False

    If Not Intersect(rngChange1, Target) Is Nothing Then
        Target.Offset(, 19).Value = Target.Value
    End If

    If Not Intersect(rngChange2, Target) Is Nothing Then
        Target.Offset(, -19).Value = Target.Value
    End If

    Application.EnableEvents = True

End Sub