在电子表格中使用VBA函数和变量
我是Excel VBA新手。我正在尝试使用我在网上找到的VBA函数,该函数允许用户一次在多个单元格上使用goalseek。如何在电子表格中调用函数,以及如何指向应该与函数中的变量关联的单元格(例如Taddr、Aaddr、gval)。我是否必须在代码本身中写入单元格值和范围,然后以这种方式运行它 也许我应该重新定义这个函数,让它把这些变量作为输入,这样我就可以编写一个公式,比如=GSeekA(Taddr,Aaddr,gval)在电子表格中使用VBA函数和变量,vba,Vba,我是Excel VBA新手。我正在尝试使用我在网上找到的VBA函数,该函数允许用户一次在多个单元格上使用goalseek。如何在电子表格中调用函数,以及如何指向应该与函数中的变量关联的单元格(例如Taddr、Aaddr、gval)。我是否必须在代码本身中写入单元格值和范围,然后以这种方式运行它 也许我应该重新定义这个函数,让它把这些变量作为输入,这样我就可以编写一个公式,比如=GSeekA(Taddr,Aaddr,gval) GSeekA是一个子过程,而不是一个函数。不能像函数一样从工作表单元格
GSeekA是一个子过程,而不是一个函数。不能像函数一样从工作表单元格调用子流程。你不想把GSeekA转换成一个函数。函数应用于将值返回到调用它们的单元格。他们不应该(而且通常不能)改变工作表上的其他内容 您需要将GSeekA作为sub运行。现在的问题是如何将用户提供的信息输入sub。您可以使用InputBox提示用户输入一条信息。如果输入框太多,输入框就会变得很麻烦 您可以在电子表格中创建用户必须输入信息的区域,然后从该区域读取信息。现在就是这样设置的。它正在读取名为asheet和tsheet的单元格。只要这些命名范围存在,代码就可以工作 最后,您可以创建一个用户将填写的用户表单。这就像把一堆输入框放在一个表单上 更新这里有一个简单的过程,你可以开始和加强
Public Sub GSeekA()
Dim rAdjust As Range
Dim rTarget As Range
Dim dGoal As Double
Dim i As Long
'Set these three lines to what you want
Set rAdjust = Sheet1.Range("I2:I322")
Set rTarget = Sheet1.Range("J2:J322")
dGoal = 12.1
For i = 1 To rAdjust.Count
rTarget.Cells(i).GoalSeek dGoal, rAdjust.Cells(i)
Next i
End Sub
请花点时间复习。至于调用函数时传递的变量,我知道如何传递变量,但上面的函数不会将变量传递到函数中。在我看来,如果我想使用函数,我必须手动将单元格值输入到代码中,以便使用这些变量为函数提供一些参数。子GSeekA(Aaddr作为字符串)查看此Dick的
solverRok
和SolverSolve
函数sthx。如何在电子表格中定义asheet、tsheet等单元格?我应该能够通过在代码中插入Aaddr=Range(“I2:I322”).Value Taddr=Range(“J2:J322”).值来运行子流程,然后运行它?不,我不这么认为。Aaddr和Taddr是看起来像单元格引用的字符串。你需要的是一个更简单的程序开始,然后你可以增强。我正在更新我的答案。
Public Sub GSeekA()
Dim rAdjust As Range
Dim rTarget As Range
Dim dGoal As Double
Dim i As Long
'Set these three lines to what you want
Set rAdjust = Sheet1.Range("I2:I322")
Set rTarget = Sheet1.Range("J2:J322")
dGoal = 12.1
For i = 1 To rAdjust.Count
rTarget.Cells(i).GoalSeek dGoal, rAdjust.Cells(i)
Next i
End Sub