我正在尝试构建一个收费来进行数据分析。我想编写一个文本框,它将显示组合我选择的每个单元格的结果的值。例如:单元格A1包含值“2”,单元格B1包含值“3”,单元格C1为= A1 * B1,所以“6”。我想添加一个文本框,当我选择单元格C1时,将显示文本“2 * 3”而不是“A1 * B1”,如同在公式栏中所示。有谁知道如何去做?在文本框中打印方程组件 - excel vba
0
A
回答
1
您将要面临的挑战是:there is no such thing as a "formula" object in the Excel object model,因为公式是一串基本上是任意长度和构造的字符串,任意级别的嵌套和单元格引用/先例,每个嵌套和单元格可能包含一个公式需要一些递归)或常量等。没有“一般”的方法来解析这些东西,但正如链接的答案所指出的,有一些工具可以做类似的事情。
如果您有特定的个案,您可能会破解某些适用于这些案例的功能,但不会适用于其他公式。使用范围对象的.DirectPrecendents
,可以跟踪公式中引用的单元格,并且可以使用一些字符串函数将公式逆向设计为常量表达式,并与操作符重新组合。但是,我自己的测试显示这是充满了问题,因为这些公式将返回DirectPrecedents
相同的列表:
=$A1*$B1
=$A$1*$B$1
=$A$1*B1
=A1*B1
在这种情况下(及其他),先例将成为该范围A1和B1,但这些变体中的每一个都要求您可以在运行时识别每个先例中的行和/或列是否为“绝对”,否则,任何使用字符串函数(如Mid
,Left
和Instr
)的尝试都可能失败或返回误报。
如果你的公式是非常简单,你知道你一直在处理中的引用,每一个都包含常量表达式(而不是其他配方refernces),例如:
= $ A $ 1 * B $ 1 “如果A1包含一个常数,所以不B1
你可以这样做:
Function parseFormula(cl as Range, operator as String)
Dim arr, i As Long
Dim ret As String
ret = "="
arr = Split(Mid(cl.Formula, 2), operator)
' yields an array like {$A$1, $B1}
For i = 0 To UBound(arr)
If (i = 0) Then
ret = ret & Range(arr(i)).Value
Else
ret = ret & operator & Range(arr(i)).Value
End If
Next
parseFormula = ret
End Function
当然,这不会对式混合运营商如工作:
=A1+B1/C1
也不会对式混合其中常量和引用类似工作:
=65+B2/C1
相关问题
- 1. 以编程方式打印excel文件
- 2. excel宏VBA搜索和打印文件
- 3. Excel VBA - 检查一组文本框
- 4. Excel 2013在VBA中打印为PDF
- 5. 如何在Excel VBA中更快打印?
- 6. VBA - 在Excel中漂亮打印一行
- 7. VBA在excel中停止打印值
- 8. 从Powerpoint在VBA中打开Excel文件
- 9. 从excel vba打印word文档
- 10. 在VBA中打开本地JSON文件
- 11. Excel VBA 2013打印图像
- 12. VBA Excel禁用打印
- 13. Excel VBA和VB6打印机
- 14. 文本框条件格式 - Excel VBA
- 15. Excel VBA - 形状文本框OnChange事件
- 16. 以编程方式在VBA中添加组合框(Excel)
- 17. VBA打开Excel文件
- 18. 在asp.net中打印Excel文件
- 19. 使用VBA从Excel文件中的powerpoint打印内容
- 20. 使用VBA在Outlook 2007中以编程方式打印文档
- 21. 打印到文本框的方法
- 22. VBA Excel中的组合框
- 23. 在excel vba中打印和打印预览事件之间的区别
- 24. 在C中打印文本框内容#
- 25. excel vba中的打印范围
- 26. Excel VBA:在打印前增加一行
- 27. 打印文件的Excel C#
- 28. 打印excel文件c#
- 29. C#EPPLUS - 打印excel文件
- 30. 在Excel VBA中跨域文件副本
如何将复杂的公式是什么?你到目前为止尝试过什么? –
该公式不会那么复杂,几乎都是百分比,数据都在同一张工作表中,我创建了一个宏来显示百分比并隐藏值,因为基数非常混乱。其实,我有很多问题,我想过使用“评估公式”函数和打印值,但是我不知道如何将它用在编程语言中。 –