繁体   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