我有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 键的功能,那也可以,也不需要检查我在的专栏。
最后,这应仅适用于特定工作表跟踪。
谢谢!
答案 0 :(得分:0)
这样的事情对你有用。确保代码位于“跟踪”工作表代码模块中:
以下是您将使用的代码:
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