如何使用 Excel 中的 VBA 代码将光标锁定到特定单元格并将焦点仅集中在特定单元格上

如何使用 Excel 中的 VBA 代码将光标锁定到特定单元格并将焦点仅集中在特定单元格上

我在工作表的 A 列中有一个姓名列表。

 A
---
Robby
Harry
Nick

在任何单元格中输入名称并单击其他单元格时。如果输入的名称不在列表中,则焦点不应移动到其他单元格。我不应该能够选择其他单元格或移动光标。光标应该只聚焦到输入的单元格。光标应该被锁定,直到我不输入列表中给出的名称。一旦我在给定的列表中输入名称,我应该能够将光标移动到其他单元格。

那么如何使用 Excel 中的 VBA 代码将光标锁定到特定单元格并仅聚焦到该特定单元格。

答案1

将以下事件宏放在工作表代码区域:

Private Sub Worksheet_Change(ByVal Target As Range)
   If Intersect(Target, Range("A:A")) Is Nothing Then
      v = Target.Value
      Dim r As Range
      If Range("A:A").Find(what:=v, after:=Range("A1")) Is Nothing Then
         Target.Select
         Stuck = True
         Set rStuck = Target
      Else
         Stuck = False
      End If
   End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Stuck Then rStuck.Select
End Sub

将以下内容放入标准模块中:

Public Stuck As Boolean
Public rStuck As Range

请注意,此代码将允许您更改列A,但对任何其他列的更改施加限制。

相关内容