Excel VBA范围作为全局变量的问题
我有一个Excel VBA范围作为全局变量的问题,vba,excel,global-variables,Vba,Excel,Global Variables,我有一个UserForm,用于快速数据输入。初始化UserForm时,会为不同的宏指定一些快捷方式。其中一个宏从我的数据表中删除整行。应使用另一个宏来恢复此类删除。为此,我使用一个范围作为全局变量来备份删除。但是,范围不在范围内 请参阅相关代码段和错误: 表格代码: Public Sub UserForm_Initialize() 'set shortcuts '... Application.OnKey "{BACKSPACE}", "delete_row"
UserForm
,用于快速数据输入。初始化UserForm
时,会为不同的宏指定一些快捷方式。其中一个宏从我的数据表中删除整行。应使用另一个宏来恢复此类删除。为此,我使用一个范围作为全局变量来备份删除。但是,范围不在范围内
请参阅相关代码段和错误:
表格代码:
Public Sub UserForm_Initialize()
'set shortcuts
'...
Application.OnKey "{BACKSPACE}", "delete_row"
Application.OnKey "^z", "redo_row"
'...
'<curRow> is global variable (in Module1) which is needed for PicBro Userform..
curRow = ActiveCell.Row
'...
End Sub
'global variables in module1
'****************************
Public curRow As Long
Public rngBU As Range
'****************************
Public Sub delete_row()
'...
Set rngBU = Data.Rows(curRow)
MsgBox "Copied row " & rngBU.Row & " for backup.."
Data.Rows(curRow).delete Shift:=xlUp
Data.Cells(curRow, 1).Activate
'...
End Sub
模块1代码:
Public Sub UserForm_Initialize()
'set shortcuts
'...
Application.OnKey "{BACKSPACE}", "delete_row"
Application.OnKey "^z", "redo_row"
'...
'<curRow> is global variable (in Module1) which is needed for PicBro Userform..
curRow = ActiveCell.Row
'...
End Sub
'global variables in module1
'****************************
Public curRow As Long
Public rngBU As Range
'****************************
Public Sub delete_row()
'...
Set rngBU = Data.Rows(curRow)
MsgBox "Copied row " & rngBU.Row & " for backup.."
Data.Rows(curRow).delete Shift:=xlUp
Data.Cells(curRow, 1).Activate
'...
End Sub
问题不在于范围。您
将
全局变量设置为对某个范围的引用。然后您将删除此范围。现在,全局变量是对已删除范围的引用。这是对无任何内容的引用。。愚蠢的是,我相信这些值会被存储起来。有什么想法可以实现撤销行删除吗?将行复制到一个隐藏的工作表。这正是我所做的-非常感谢你的提示@AxelRichter,如果你把你的评论作为答案,我会检查的!