簡體   English   中英

我在Excel / Mac中的VBA功能“該名稱無效”

[英]“That name is not valid” for my VBA function in Excel/Mac

一個簡單的VBA功能。 當我嘗試在工作表中使用它時,無論做什么,我得到的都是“該名稱無效”。 我沒主意了。

Sub FindABV(temperature)
With Worksheets("Sheet1")
    .Range("C28").GoalSeek _
    Goal:=temperature, _
    ChangingCell:=.Range("B28")
End With
FindABV = .Range("B28").Value
End Sub

我嘗試創建一個新模塊來放入它。沒有變化。 並且沒有來自代碼編輯器的錯誤指示。

Sub過程執行一個任務,然后將控制權返回給調用代碼,但是它沒有將值返回給調用代碼。

在這里查看更多。

也就是說,您不能將過程設置為等於以下內容:

FindABV = .Range("B28").Value

因為該名稱無效 (您不能說一個過程等於某個值,所以沒有意義)。 您可能想使用一個函數來返回由目標搜索者計算出的該單元格的值,具體取決於您通過該函數傳遞的輸入temperature

Function FindABV(temperature)
With Worksheets("Sheet1")
    .Range("C28").GoalSeek _
    Goal:=temperature, _
    ChangingCell:=.Range("B28")
End With
FindABV = .Range("B28").Value '<-- return the value
End Function

但是,請注意:如果=FindABV(temperature)位於Sheet1.Range("B28") ,則將具有循環引用,因為函數將嘗試具有其自身的值。

您的代碼不會提供您想要的結果。 如果您要讓Function處理與B28C28存儲的值不同的值,則必須這樣編寫:

Public Function FindABV(goalCell As Range, changeCell As Range, temperature As Double)

    goalCell.GoalSeek Goal:=temperature, ChangingCell:=changeCell

    FindABV = changeCell
End Function

但是這並不能在任何情況下不要緊,因為GoalSeek實際上改變了價值ChangingCell其中Excel ,如果它是從內部調用不會做Function

暫無
暫無

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

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