這對我來說是新手 - 我創建了一個函數,用於通過VBA更新SQL Server表。它需要一定範圍的單元格,並返回有多少記錄受到影響的Long
。創建函數,但僅適用於VBA環境(不在工作簿公式中)
所以,我希望這個函數可以在我的工作簿中用於VBA,但不希望它在Excel中顯示爲可用的公式(在VBA環境之外)。
我確信我以前做過這些,但不記得如何從Excel中隱藏我的函數,因此它只能用於VBA。
我該怎麼做?
這對我來說是新手 - 我創建了一個函數,用於通過VBA更新SQL Server表。它需要一定範圍的單元格,並返回有多少記錄受到影響的Long
。創建函數,但僅適用於VBA環境(不在工作簿公式中)
所以,我希望這個函數可以在我的工作簿中用於VBA,但不希望它在Excel中顯示爲可用的公式(在VBA環境之外)。
我確信我以前做過這些,但不記得如何從Excel中隱藏我的函數,因此它只能用於VBA。
我該怎麼做?
將其移動到其自己的模塊(.BAS),並在頂部貼Option Private Module
。完成; Excel不會再看到它,但VBA(和COM加載項也可以看到它,所以我認爲引用的VBA項目也可以看到它)。
**絕對完美!! ** - 正是我想要的! - 謝謝!!! –
我只是使用一個子,並通過參數ByRef
。一個整數/長變量,你可以做到這一點幾種不同的方式:
見的例子:
Sub Main()
Dim i as Long
i = 1
bar (i) 'Variable is passed ByVal because parens FORCE an evaluation, you aren't passing "i", you're passing the expression "(i)".
Debug.Print i
bar i 'Variable is passed ByRef even without explicitly doing so
Debug.Print i
anotherFunction i 'Variable is passed ByRef, same as above
Debug.Print "i: " & CStr(i)
anotherFunction (i) 'Variable is passed ByVal because parens FORCE an evaluation
Call anotherFunction(i) 'Variable is passed byRef
End Sub
Sub bar(val As Long)
Dim j
For j = 1 To 10
val = val + 1
Debug.Print "j: " & CStr(val)
Next
End Sub
Sub anotherFunction(ByRef val as Long)
Dim j
For j = 1 To 10
val = val + 1
Debug.Print "j: " & CStr(val)
Next
End Sub
聲明它爲'私人'? –
@DavidZemens,謝謝,但我確實希望跨工作簿使用它(我想將它保存在我的personal.xls中),我只是不希望它直接在Excel中使用。 –
然後讓它成爲'Sub'而不是'Function'。 –