Vba 从模块和基于工作表运行代码之间的差异
我面临以下问题的挑战: 我有两个代码,一个是基于图纸的,第二个是基于模块的。在模块中,我定义了如下范围:Vba 从模块和基于工作表运行代码之间的差异,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
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从模块运行代码时,它工作正常,但是如果我从工作表中编写的commandbutton调用它(调用它不工作,并且似乎问题在于范围)。
有什么想法吗,我错过了什么
谢谢不合格的范围对象可能会引发1004错误
Set rega = see.Range(Cells(3, gh + 2), Cells(39, gh + 2))
请记住,单元格
方法,除非由父工作表
对象限定,否则将始终隐式引用活动表
尝试:
通常它不应该给出任何错误。你能显示你在commandbutton click中写了什么代码吗?它没有给出错误,只是没有定义范围,所以范围是“无”它与commandbutton中所写的内容无关,它是一个很长的代码,可以做很多不同的事情。谢谢David,它帮助解决了这个问题。你是对的。但是,只有在我将Set-see=sheets(“Sheet2”)更改为Set-see=Thisworkbook.sheets(“Sheet2”)后,问题才得以解决.RegardsUnless代码位于工作表模块中,在这种情况下,它将引用该工作表,即使该工作表未处于活动状态。
With see
Set rega = .Range(.Cells(3, gh + 2).Address, .Cells(39, gh + 2).Address)
End With