Excel VBA, 将鼠标移动到不同的单元格
Excel VBA, move mouse to different cell
在Col A中,如果A3 = No,鼠标光标移动到F3,就可以了。
在A列,如果A4 = No,鼠标光标移动到F4等等。
我似乎无法找出正确的代码或如何正确编写代码。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) <> "A3" Then Exit Sub
Application.EnableEvents = False
If Target.Value = "No" Then
Range("F3").Select
End If
Application.EnableEvents = True
End Sub
到目前为止,这就是我让它在一个单元格中工作的原因。
检查 Target
是否在 A 列中,如果是,则移动到 F 列中的同一行:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("A:A")) Is Nothing Then Exit Sub
If Target.CountLarge > 1 Then Exit Sub
If Target.Value = "No" Then
On Error GoTo SafeExit
Application.EnableEvents = False
Me.Range("F" & Target.Row).Select
End If
SafeExit:
Application.EnableEvents = True
End Sub
请注意,.Select
-ing 不会导致更改事件重新触发,因此如果您有不想执行的 SelectionChange
事件处理程序,则只需禁用事件.
工作表更改:有条件地偏移
Private Sub Worksheet_Change(ByVal Target As Range)
Const FirstCellAddress As String = "A3"
Const ColumnOffset As Long = 5
Const Criteria As String = "No"
Dim irg As Range
With Range(FirstCellAddress)
Set irg = Intersect(.Resize(Rows.Count - .Row + 1), Target)
End With
If irg Is Nothing Then Exit Sub
Dim arg As Range, cCell As Range
Dim a As Long, c As Long
For a = irg.Areas.Count To 1 Step -1
Set arg = irg.Areas(a)
For c = arg.Cells.Count To 1 Step -1
Set cCell = arg.Cells(c)
If StrComp(CStr(cCell.Value), Criteria, vbTextCompare) = 0 Then
cCell.Offset(, ColumnOffset).Select
Exit For
End If
Next c
Next a
End Sub
在Col A中,如果A3 = No,鼠标光标移动到F3,就可以了。 在A列,如果A4 = No,鼠标光标移动到F4等等。
我似乎无法找出正确的代码或如何正确编写代码。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) <> "A3" Then Exit Sub
Application.EnableEvents = False
If Target.Value = "No" Then
Range("F3").Select
End If
Application.EnableEvents = True
End Sub
到目前为止,这就是我让它在一个单元格中工作的原因。
检查 Target
是否在 A 列中,如果是,则移动到 F 列中的同一行:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Me.Range("A:A")) Is Nothing Then Exit Sub
If Target.CountLarge > 1 Then Exit Sub
If Target.Value = "No" Then
On Error GoTo SafeExit
Application.EnableEvents = False
Me.Range("F" & Target.Row).Select
End If
SafeExit:
Application.EnableEvents = True
End Sub
请注意,.Select
-ing 不会导致更改事件重新触发,因此如果您有不想执行的 SelectionChange
事件处理程序,则只需禁用事件.
工作表更改:有条件地偏移
Private Sub Worksheet_Change(ByVal Target As Range)
Const FirstCellAddress As String = "A3"
Const ColumnOffset As Long = 5
Const Criteria As String = "No"
Dim irg As Range
With Range(FirstCellAddress)
Set irg = Intersect(.Resize(Rows.Count - .Row + 1), Target)
End With
If irg Is Nothing Then Exit Sub
Dim arg As Range, cCell As Range
Dim a As Long, c As Long
For a = irg.Areas.Count To 1 Step -1
Set arg = irg.Areas(a)
For c = arg.Cells.Count To 1 Step -1
Set cCell = arg.Cells(c)
If StrComp(CStr(cCell.Value), Criteria, vbTextCompare) = 0 Then
cCell.Offset(, ColumnOffset).Select
Exit For
End If
Next c
Next a
End Sub