結論

在「適用於」一節中列出的 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 説明文件。

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。