我刚开始使用excel宏编辑。我的扩展表是基于输入团队成绩的。我有四栏。A和C列是队#的分数,B和D列是他们的分数。所以我想按下单元格B2中的enter键,而不是下到B3,它向右转到D2。在去了D2之后,去了B3。我有4排队伍,所以它一直延续到D6。我试过使用宏,但没有成功。
这就是我试过的,但没有成功。当使用Visual代码按enter选择单元格时,我需要某种自动方式。

发布于 2022-03-31 13:52:57
只需双击要在Visual编辑器中的Microsoft对象下演示此行为的工作表,就可以打开附加到该工作集的代码模块:

再加上这段代码。“选项显式”指令是可选的。
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Column
Case 2: Target.Offset(0, 2).Select
Case 4: Target.Offset(1, -2).Select
End Select
End Sub发布于 2022-04-01 09:01:49
你没有回答我的澄清问题..。如果按下Enter的单元格已被修改,则代码很简单。你已经收到了一个关于这个假设的答案。现在,如果您需要所需的行为而不修改单元格,请在活动工作表代码模块中复制下一个事件(右键单击工作表名称并选择‘查看代码’):
Option Explicit
Private prevAddress As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lastRow As Long, rngScore As Range, prCell As Range
If Target.cells.CountLarge > 1 Then Exit Sub
If prevAddress = "" Then
If Target.Column = 2 Or Target.Column = 4 Then
prevAddress = Target.Address: Exit Sub
End If
End If
lastRow = Me.Range("A" & Me.rows.count).End(xlUp).row
Set rngScore = Union(Me.Range("B2:B" & lastRow + 1), Me.Range("D2:D" & lastRow + 1))
If Not Intersect(Target, rngScore) Is Nothing Then
Application.EnableEvents = False
If Target.Column = 2 Then
If Target.Address = "$B$2" And prevAddress <> "D" & lastRow Then 'for CLICKING in B2
prevAddress = "$B$2"
Application.EnableEvents = True: Exit Sub
End If
If Target.Address = "$B$3" And (prevAddress = "$B$2" Or prevAddress = "$D$" & lastRow) Then
Target.Offset(-1, 2).Select: prevAddress = Target.Offset(-1, 2).Address
ElseIf prevAddress = Target.Offset(-1).Address Or _
Target.Offset(-2, 2).Address = prevAddress Then
Target.Offset(-1, 2).Select: prevAddress = Target.Offset(-1, 2).Address
Else
prevAddress = Target.Address
End If
Else 'for column 4:
If Target.row = lastRow + 1 Then 'for the case of the last cell in the accepted range
Me.Range("B2").Select
Else
If prevAddress = Target.Offset(-1).Address Then
Target.Offset(0, -2).Select: prevAddress = Target.Offset(0, -2).Address
Else
prevAddress = Target.Address
End If
End If
End If
Application.EnableEvents = True
End If
End Subhttps://stackoverflow.com/questions/71693003
复制相似问题