VBA Excel – 美味公共variables与button按下

我正在尝试创build一个文件,其中有一堆常量string。

我宣布然后在一个模块中公开这样的:

Public Abc As String 

在“ThisWorkbook”中,我运行下面的代码来初始化devariables

 Private Sub Workbook_Open() Abc = "C5" End Sub 

我有button编码来改变一些值,如:

 If Range(Abc) = "" Then Range(Abc) = 1 Else Range(Abc) = Range(Abc) + 1 End If 

当我运行这个代码的button:

 Sub BotaoNovoDia() i = 3 While i <= 33 If Cells(i, 11) = "" Then Cells(i, 11) = Range(Apresentacao) Cells(i, 12) = Range(Aceitacao) Cells(i, 13) = Range(Aceitou) Cells(i, 31) = Range("D41") Cells(i, 11).Interior.Color = Range(Apresentacao).Interior.Color Cells(i, 12).Interior.Color = Range(Aceitacao).Interior.Color If Range("K34") < 0.65 Then Range("K34").Interior.Color = vbRed Else Range("K34").Interior.Color = vbGreen End If If Range("L34") < 0.45 Then Range("L34").Interior.Color = vbRed Else Range("L34").Interior.Color = vbGreen End If Range(Aceitou) = 0 Range(Rejeitou) = 0 Range(NaoApres) = 0 End Else i = i + 1 End If Wend End Sub 

我尝试再次运行第一个button,我得到和错误说:“运行时错误'1004':对象'_Global'的方法'范围'失败”debuggingbutton带我到试图访问公共variables值。 我能做些什么来维护公共variables中的值?

当你调用End (本身,而不是End If一部分等),你清除你的Globals。

不要使用End。

使用命名的范围是一个好主意, 但是你的公开声明不应该工作 – 除了那个讨厌的End声明。 (我错过了第一次阅读…)

但是,您的范围在每个函数中都不清楚,例如哪个工作表是Range引用的,所以如果一个函数在另一个工作表上工作,那么按下触发“Change”的button可能会引用不同的地方像那个参考。

例如你的范围应该是类似于SomeWorkbook.TheWorksheet.Range(<range>) ,当你改变单元格值时,你应该使用.Value来确保没有歧义 – 从这里通过search知道错误1004是最不描述的错误代码…