Excel 如何知道触发SelectionChange过程的前一行号?
我有一个Excel电子表格,每次移动活动单元格时都会调用Excel 如何知道触发SelectionChange过程的前一行号?,excel,vba,userform,Excel,Vba,Userform,我有一个Excel电子表格,每次移动活动单元格时都会调用SelectionChange过程 此过程执行一定数量的操作,并以用户窗体显示结果。用户可以通过命令按钮验证结果或取消 Selection.row提供目标单元格的行 如何检索刚刚离开的单元格的行号 下面的第一个代码块位于工作表代码中,第二个代码块是userform代码。这个测试用户表单只包含一个标签和一个按钮 按钮代码的第一行起作用,但给出了目标行。我希望第二行可以工作,但OldRow是空的,因此该行崩溃。如何使OldRow对userfor
SelectionChange
过程
此过程执行一定数量的操作,并以用户窗体显示结果。用户可以通过命令按钮验证结果或取消
Selection.row
提供目标单元格的行
如何检索刚刚离开的单元格的行号
下面的第一个代码块位于工作表代码中,第二个代码块是userform代码。这个测试用户表单只包含一个标签和一个按钮
按钮代码的第一行起作用,但给出了目标行。我希望第二行可以工作,但OldRow是空的,因此该行崩溃。如何使OldRow对userform可见
Dim OldRow As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static OldRange As Range
If Not OldRange Is Nothing Then
' do things
End If
MsgBox OldRow
UserForm1.Show
Set OldRange = Target.Cells(1, 1)
OldRow = OldRange.Row
End Sub
我会那样做
Option Explicit
Dim PrevActiveCell As Range
Dim CurActiveCell As Range
Dim frm As New UserForm1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set PrevActiveCell = CurActiveCell
Set CurActiveCell = ActiveCell
If PrevActiveCell Is Nothing Then
' Either you forget to set CurActiveCell (when opening the workbook or ...)
' or you did reset the VBA project
Else
With frm
.Caption = "Cur:" & CurActiveCell.Row & " Old: " & PrevActiveCell.Row
.Show
End With
End If
End Sub
在表格中,我有这个代码
Option Explicit
Private Sub CommandButton1_Click()
Hide
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer _
, CloseMode As Integer)
' Prevent the form being unloaded
If CloseMode = vbFormControlMenu Then Cancel = True
' Hide the Userform
Hide
End Sub
PS在userform的代码中引用userform本身不是一个好主意。阅读材料和
Option Explicit
Private Sub CommandButton1_Click()
Hide
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer _
, CloseMode As Integer)
' Prevent the form being unloaded
If CloseMode = vbFormControlMenu Then Cancel = True
' Hide the Userform
Hide
End Sub