在模块级空间,我可以直接使用值作为常量。
Private Const AAA As Long = 3
Sub Test()
Debug.print AAA
End Sub
但是,我不能将单元格值用作常量。
Private Const BBB As Long
BBB = Worksheets("sheet1").Cells(1, 1)
Sub Test()
Debug.print BBB
End Sub
我想在模块级空间上定义常量“BBB”,因为该值用于另一个过程。
请告诉我这个或替代方法的解决方案。
答案 0 :(得分:0)
为什么要将单元格定义为常量?你有特殊原因吗?根据它的性质,单元格值可以改变 - 因此不是常数。
您可以将调用包装为读取模块中函数的单元格,然后从您喜欢的位置调用它。
Public Function GetValue() as variant
GetValue = Worksheets("sheet1").Cells(1, 1).Value
End if
但您也可以直接从您的呼叫网站拨打电话。
Worksheets("sheet1").Cells(1, 1).Value
如果使用函数包装方式,则可以在某个call-site调用该调用时设置断点。
除此之外,您还可以定义一个属性来读取单元格并删除写入部分,以便在从代码访问时只读取它。但是如上所示,没有什么可以阻止你访问单元格 - 除非你真的用保护锁定单元格......
希望有所帮助。
答案 1 :(得分:0)
常量需要在声明后赋值,并且我假设因为单元格值可以更改,因此它不能用于声明常量。
如果您只想要最终用户无法操作的数据,您可以解锁所有单元格,保护工作簿,然后锁定要用作常量的特定单元格。
答案 2 :(得分:0)
您可以这样解决方法:
Guid?
答案 3 :(得分:0)
您应该将常量赋值给某个值,然后就不能更改它。并且您不能从这样的过程或函数中分配值:
BBB = Worksheets("sheet1").Cells(1, 1)
关于范围,它们是必须设置的变量。一个好主意,设置一个恒定的范围是将它放在一个void函数中并像这样调用它:
Function BBB () As Range
Set BBB = Worksheets("ale").Range("aleale")
End Function
Public sub aaa
dim my_value
my_value = BBB
debug.print (my_value)
End sub
因此,它就像一个常数,但并不完全,但它适合你的想法。