簡體   English   中英

Excel VBA將值分配給用戶定義函數的命名范圍失敗錯誤1004

[英]Excel VBA assign value to named range from user defined function fails error 1004

我在模塊中有一個功能。 該功能定義如下:

Public Function CourseSetup(ByVal SROfferId As Integer) as string

調用該函數時,以下行失敗:

Worksheets("CourseEvaluation").Range("CourseName").value = "1234" 

失敗,錯誤1004。

子(宏)中的同一行有效。 CourseName是一個名為ranged的單元格。 獲得上述范圍的值有效。

在即時窗口中:

?Worksheets("CourseEvaluation").Range("CourseName").value 

返回范圍中的當前值。

從單元格調用的用戶定義函數只能將值返回到調用它們的單元格。 因此,不允許您的UDF將值寫入已定義的名稱。

從工作表調用的函數無法處理輸入公式的活動單元格以外的工作表對象。

這樣可以保留公式中的依賴關系,防止循環引用錯誤等。

作為一般規則 ,使用子例程來操作對象,並使用公式返回值(無論是單元格引用還是變量)。

一個例外是,一個UDF從子程序可以操縱對象工作表調用,但是這可能不是一個好習慣開始。 保持函數僅限於將值返回到變量/單元格,並使用子例程來操作對象。

進一步閱讀:

使Excel功能影響“其他”單元格

http://www.excelforum.com/excel-programming-vba-macros/477157-changing-cell-values-from-within-udf.html

http://www.ozgrid.com/Excel/free-training/ExcelVBA1/excelvba1lesson21.htm

幾天前我遇到了這個問題並找到了答案。 從函數轉換為sub解決了問題。 但是,如果我在立即窗口中調用該函數,它將根據需要執行。 以為這很奇怪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM