Excel 单元格公式可以引用 UserForm 控件吗?

Posted

技术标签:

【中文标题】Excel 单元格公式可以引用 UserForm 控件吗?【英文标题】:Can an Excel cell formula refer to a UserForm control? 【发布时间】:2017-12-13 15:34:24 【问题描述】:

我有一个带有文本框的用户窗体,这些文本框已经通过 ControlSource 属性绑定到某些工作表单元格。我需要在其中两个绑定值之间运行计算,并将结果放在第三个工作表单元格中。我知道有很多方法可以做到这一点,但我想知道是否有某种方法可以作为引用 UserForm 控件值的工作表单元格中的公式来做到这一点。例如,我希望能够在单元格 C3 中放置一个公式,类似于

= UserForm1.TextBox1.Value * UserForm1.TextBox2.Value

但我没有找到任何使用工作表单元格公式直接从用户窗体控件获取值的参考。 (不,在这种情况下,我不能通过将“= A1 * B2”之类的内容插入单元格 C3 来引用绑定的单元格。这个问题专门关于从工作表中引用 UserForm 控件是否可行单元格公式。) 提前感谢您提供任何有用的建议。

【问题讨论】:

为什么你不能在C3中使用=A1*B2 因为绑定的单元格引用会发生变化,但我希望计算结果始终位于同一个单元格中。我可以在绑定单元格更改时传递它们的地址,并且每次都在 C3 中重写公式,如果必须的话,但是只引用控件本身中的值会容易得多。 我在我的回答中展示了一个 UDF,但我仍然认为您可以只使用公式而无需读取控件属性。如果单元格要更改,则使用命名单元格(从而抽象出绝对地址)。让控件绑定到命名范围,并让您的公式引用名称。 【参考方案1】:

在工作表上引用 ActiveX 控件属性的唯一方法是通过用户定义的函数,例如:

Public Function GetTextBoxValue(TextBoxName As String) As String
  On Error GoTo 0
  Dim o As OLEObject
  Set o = Sheet1.OLEObjects(TextBoxName)
  On Error Resume Next
  If Not o Is Nothing Then
    GetTextBoxValue = o.Object.Text
  End If
End Function

然后从单元格中调用函数,例如:=GetTextBoxValue("TextBox1")

【讨论】:

我认为您的意思是 Sheet1.OLEObjects(TextBoxName) 而不是 Sheet1.OLEObjects("TextBox1") 确实 - 重构了一半。现已修复

以上是关于Excel 单元格公式可以引用 UserForm 控件吗?的主要内容,如果未能解决你的问题,请参考以下文章

excel 公式中包含带公式的单元格,如何正确引用

excel中追踪引用单元格有啥作用,怎么用啊

excel怎么使用公式引用单元格

将 VLookup 公式设置为 excel 单元格

在excel中横向拖动公式,如何实现引用的单元格地址行号递增?

excel中的单元格引用有哪几种方式?