2017-09-13 84 views
1

我想在Excel文檔的vba代碼中聲明變量並在單元格中使用它。聲明VBA變量並在Excel的工作表中使用它

事情是這樣的:

VBA代碼:

Dim foo as Integer 
foo = 2 

Excel單元格(任意)

=foo 

這可能嗎?

+1

不使用它,除非你想使用[無模式]的(HTTPS那是不可能的://stackoverflow.com/a/16860597/1153513)和可能不可見的'userform'。您只能在表格中存儲值(如果需要,可以隱藏它們)。單元格可以用作命名範圍,然後可以使用'= foo'來引用它們。然而,價值必須在一個單元格中(再次)。 – Ralph

+0

好的。非常感謝你! –

+1

你有點兒可以。如果你在一個模塊中創建一個'Public' UDF,那麼你就可以從你的單元調用這個UDF,就像調用其他任何函數一樣......也就是說你的模塊中有一個名爲'GetFoo'的UDF。在你的單元格中輸入'= GetFoo()',你的單元格將顯示你的UDF返回的值。您的問題在於,只有在您最初調用該功能時纔會觸發。如果你然後改變'GetFoo'中的返回值,單元格不會被更新,除非你再次觸發它。 – Zac

回答

2

您可以在代碼模塊

Public Function Foo() As Integer 
    Foo = 2 
End Function 

聲明公用函數在某小區

=Foo() 
+0

:)偉大的思想和所有這一切。問題仍然是這些UDF必須在初始調用後觸發以更新值 – Zac

+2

您可以將函數設置爲「易失性」,以便在每次執行計算時計算它。 (或者有時我將'Now()'的虛擬變量傳遞給函數來實現同樣的事情 - 所以'= Foo(Now())'作爲公式,'Public Function Foo(d As Date)As Integer'作爲程序聲明[我通常只會在我懶得寫出正確的代碼時才這樣做,例如一個快速而骯髒的一次性任務。]) – YowE3K

+1

雖然這對於這個問題來說當然是一個可行的解決方案,但我仍然覺得不得已指出[volatile UDF](https://msdn.microsoft.com/en-us/library/office/bb687891.aspx#sectionSection2)會嚴重降低Excel文件的性能。此外,你可能想閱讀這篇文章:https://stackoverflow.com/questions/24353506/non-volatile-udf-always-recalculating – Ralph

相關問題