gpt4 book ai didi

VBA 中变量定义的函数名称

转载 作者:行者123 更新时间:2023-12-03 02:52:41 26 4
gpt4 key购买 nike

这里是新的 VBA 用户,工程师,而不是程序员。感谢您的耐心等待。花了几个小时在帮助和网上试图找到这个答案。找到了一些答案,但它们是针对 php 的。使用 MS Office Home and Student 2007。

我有一个包含 8 个方程的列表。我让用户输入他们想要计算的方程的编号,我将该编号称为索引。有没有办法在定义函数名时将索引放入函数名中?如:

Function PlotFun[index]= some f(x)

或者是否可以在子例程中使用索引重新定义函数?如:

If index=1 then PlotFun=PlotFun[index] 'so PlotFun would equal PlotFun1

我想我在帮助中读到必须在函数例程中定义函数,所以这个可能不可行。

或者是否可以从Excel单元格中读取函数?我尝试使用

Function PlotFun=Worksheets(1).Range("BC6")

其中 BC6 包含“24 - 50 * x + 35 * x ^ 2 - 10 * x ^ 3 + x * 4”,这是 x 函数的正确语法,因为它是从我的 PlotFun1 例程复制的。但我没有正确的语法。我收到编译错误:预期:语句结束,就在等号处。

我还提到了 lamda 函数,但我再次收到预期:语句结束错误。

Sub Bisection()
Dim index
Call FuncIndex 'sets the index number for which equation to use for analysis
If index = 1 Then
Dim PlotFun=Function(x) x ^ 3 - 6 * x ^ 2 + 11 * x - 6
If index = 2 Then
Dim PlotFun=Function(x) 24 - 50 * x + 35 * x ^ 2 - 10 * x ^ 3 + x * 4
Do 'my calculations using PlotFun
Loop 'for specified error or iterations
End Sub

我需要在许多子例程中的几个地方使用PlotFunPlotFun1。我不想为每个 f(x) 编写/复制代码。也许有比我想象的更好的方法来做到这一点?我无法使用数组,因为方程并不都是多项式。

谢谢!

最佳答案

Is there a way to put the index into a function name when it's defined? such as:

确实不在线。您可以使用 select case 开关或一系列 if/else 语句。我通常更喜欢选择案例方法。

注意 此代码没有为 x 指定任何值,因此它将被解释为 Empty 或零值,除非您更改代码或为用户提供输入变量x值的方法。

Sub WhichFunction()

Dim i as Long
Dim functionResult as Double
i = Application.InputBox "Please enter the function's index #"
Select Case i
Case 1
functionResult = x ^ 3 - 6 * x ^ 2 + 11 * x - 6
Case 2
functionResult = - 50 * x + 35 * x ^ 2 - 10 * x ^ 3 + x * 4
Case 3
'etc.
Case 4

Case 5

Case 6

Case 7

Case 8

Case else
MsgBox "invalid function index!"
End Select
MsgBox functionResult
End Sub

关于您的代码:

I get the Expected: End of Statement error

可能是因为您的 Dim 语句没有在应有的位置结束。在 VBA 中,通常不能同时声明变量并分配变量。有异常(exception)和视觉快捷方式,但没有必要在这里讨论。

Or is it possible to read the function from a cell in excel? I tried using Function PlotFun=Worksheets(1).Range("BC6")

是的,函数可以从特定单元格读取数据,但不是您实现它的方式。您需要回到基础知识并学习如何创建函数,例如:

Function MyFunctionName(arg1 as integer, arg2 as integer)
'Code the evaluates some methods on the arguments provided
Dim myVal as Double
myVal = arg1 ^ arg2
MyFunction = myVal 'Return the calculated value
End Function

同样你可以这样做:

Function GetValueFromSheet(byVal cl as Range)
'This function will ALWAYS return the value in B6
GetValueFromSheet = Range("B6").Value
End Function

关于VBA 中变量定义的函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18950756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com