首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编码输入键

编码输入键
EN

Stack Overflow用户
提问于 2022-03-31 13:04:53
回答 2查看 131关注 0票数 -1

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

这就是我试过的,但没有成功。当使用Visual代码按enter选择单元格时,我需要某种自动方式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-31 13:52:57

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

再加上这段代码。“选项显式”指令是可选的。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2022-04-01 09:01:49

你没有回答我的澄清问题..。如果按下Enter的单元格已被修改,则代码很简单。你已经收到了一个关于这个假设的答案。现在,如果您需要所需的行为而不修改单元格,请在活动工作表代码模块中复制下一个事件(右键单击工作表名称并选择‘查看代码’):

代码语言:javascript
复制
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 Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71693003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档