2016-01-29 27 views
0

在模塊級別的空間中,我可以直接使用常量值。VBA如何獲得單元值作爲模塊級別常量?

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

爲什麼不使用公共變量呢? – manu

回答

0

爲什麼你想定義一個單元格作爲常量?你有特別的理由嗎?由於它的本質,單元格的價值可能會改變 - 所以不是一個常數。

您可以將呼叫包裝到一個模塊中的函數中讀取單元格,並從您喜歡的位置調用它。

Public Function GetValue() as variant 
    GetValue = Worksheets("sheet1").Cells(1, 1).Value 
End if 

但是,您也可以直接從您的呼叫站點呼叫該線路。

Worksheets("sheet1").Cells(1, 1).Value 

如果您使用函數包裝方式,您可以在某個呼叫站點調用呼叫時設置斷點。

其位的一邊,你也可以定義一個屬性讀取小區和刪除寫一部分,所以它從代碼中訪問只有當讀取。但沒有什麼可以阻止你接入小區,如上圖所示 - 除非你實際上保護鎖電池...

希望有所幫助。

0

恆定需要被分配一個值一旦被聲明,並且我假定由於電池值是可以改變的,因此,不能用於聲明一個常數。

如果你只是想在最終用戶不能操縱,你可以解鎖所有的細胞,保護工作簿,然後鎖定你想作爲一個常量使用特定的單元格數據。

0

可以解決辦法像:

Private Const BBB As String = "$A$1" 

Sub Test() 
    Dim BB As Long: BB = Range(BBB).Value 
    Debug.Print BBB 
End Sub 
0

你應該分配常數的值,然後你永遠不能改變它。而且你不能從這樣的程序或功能中分配數值:

BBB = Worksheets("sheet1").Cells(1, 1) 

關於範圍,它們是變量,必須設置。一個好主意,設定一定的範圍內是把它放在一個空函數調用它是這樣的:

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 

因此,它像一個恆定的,但不完全,但它是適合你的想法。

相關問題