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,如果你把你的评论作为答案,我会检查的!