結論
在「適用於」一節中列出的 Microsoft Excel 版本中,可以使用 Visual Basic for Applications 建立傳回自訂計算的使用者定義函數。然而,在由工作表儲存格中的公式呼叫時,使用者定義函數不能執行變更 Microsoft Excel 環境的動作。
其他相關資訊
由工作表儲存格中的公式所呼叫的使用者定義函數不能變更 Microsoft Excel 的環境。這代表此類函數不能執行以下任何操作:
-
在試算表中插入、刪除儲存格或設定儲存格的格式。
-
變更其他儲存格中的值。
-
在活頁簿中移動、重新命名、刪除或新增工作表。
-
變更任何環境選項,例如計算模式或畫面檢視。
-
新增名稱至活頁簿。
-
設定屬性或執行大部分的方法。
使用者定義函數旨在允許使用者建立不包括在 Microsoft Excel 隨附函數中的自訂函數。Microsoft Excel 中隨附的函數也不能變更環境。函數可以執行計算以在輸入它們的儲存格中傳回某個值或文字。任何環境變更都應透過使用 Visual Basic 副程式來完成。
計算過程中,Excel 會檢查包含使用者定義函數之儲存格的參考儲存格。如果未計算所有的參考儲存格,Excel 會傳遞 Null 或空的儲存格到函數。然後,Excel 將確保針對要計算的所有參考儲存格進行了足夠的計算傳遞。在進行最後的計算傳遞過程中,會對使用者定義函數傳遞儲存格目前的值。這會導致比預期更頻繁地呼叫使用者定義函數。因此,使用者定義函數可能會傳回意外值。 若要進行正確的計算,計算中使用的所有範圍都應該做為引數傳遞給函數。如果不以引數形式傳遞計算範圍,而是參考函數的 VBA 程式碼中的範圍,Excel 將無法在計算引擎中考慮這些區域。因此,Excel 可能無法對活頁簿進行適當的計算,以確保在計算使用者定義函數之前計算了所有參考儲存格。参考
《Visual Basic 使用者指南》第 5.0 版,第 4 章<什麼是 Visual Basic 過程>
「編寫使用者定義工作表函數」,Microsoft Excel 7.0 Visual Basic 説明文件。