从模块运行代码和从基于表单的代码之间的区别

时间:2014-11-26 07:29:14

标签: vba excel-vba excel

我面临以下问题: 我有两个代码,一个是基于表单的,第二个是基于模块的。在模块中,我定义了这样的范围:

Dim see As worksheet
Set see = sheets("Sheet2")
Dim rega As range
Dim gh As Long
gh = ThisWorkbook.Worksheets(1).Cells(1, 1)
Set rega = see.Range(Cells(3, gh + 2), Cells(39, gh + 2))

现在的问题是,当我使用F5运行模块中的代码时,它工作正常,但是如果我从工作表中写入的命令按钮调用它(调用它没有工作,似乎问题与范围。 任何想法,我缺少什么?

由于

1 个答案:

答案 0 :(得分:0)

不合格的范围对象可能会引发1004错误?

Set rega = see.Range(Cells(3, gh + 2), Cells(39, gh + 2))

请注意Cells方法,除非由父Worksheet对象限定,否则将始终隐含地引用ActiveSheet

尝试:

With see
    Set rega = .Range(.Cells(3, gh + 2).Address, .Cells(39, gh + 2).Address)
End With