在下面的代码中,我在循环"ma“从2到”n“时遇到了一些问题,其中"ma”是一个预设的数字,它等于工作表"Dados Brutos - A“中列的数目。当我尝试配置参数"ByChange“时,问题就会发生。我想在这里定义一个范围,从单元格列"na“(A、B、C等)到第6、7和8行。有人能帮我吗?我附上了一张指纹,以表明我的目标到底是什么。
编辑:
下面的代码解决了问题,多亏了АлексейР。希望这篇文章能帮助其他有同样问题的人。
Sub AjustarCurvas_A()
'
' Ajusta equações de segundo grau às amostras selecionadas
'
'
Dim na As Integer, ma As Integer
Sheets("Dados Brutos - A").Select
na = Cells.Find(What:="*", SearchDirection:=xlPrevious).Column
Sheets("Det. Ruído - A").Select
With ActiveSheet
For ma = 2 To na
SolverOk SetCell:=.Cells(2, ma), MaxMinVal:=2, ValueOf:=0, ByChange:=.Cells(6, ma).Resize(3), _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve (True)
Next ma
End With
End Sub这是"Dados Brutos - A“和"Det. Ruído - A”
我所做的就是数一数我在"Dados Brutos - A“上有多少列,并称这个数字为"na”。然后,我使用求解器("na“- 1)次数来改变单元上的值(B6:B9),并优化从它们在单元格B14上计算出来的值。然后(C6:C9)优化C14等等,直到我到达CN列,在这种特殊情况下。
发布于 2022-09-10 16:17:30
任务还不完全清楚,但试图使代码可行。特别是,在代码中有两个工作表的名称,以及一个只有一个的屏幕快照。寻找解决方案的目标函数不清楚--细胞C5:C7与C8之间的关系是什么。添加调试消息Debug.Print ...以监视进度
Sub Macro1()
Dim n As Integer, m As Integer
' the purpose of this piece of code is not clear
' Sheets("Dados Brutos - A").Select
' n = WorksheetFunction.CountA("B:B")
n = 3 ' for example
With ActiveWorkbook.Worksheets("A") ' "Det. Ruído - A" - my excel does not accept one of the characters
For m = 2 To n
Debug.Print "Trying to process range [" & .Cells(5, m).Resize(3).Address & "] to minimize value in cell " & .Cells(8, m).Address
SolverReset
SolverOk SetCell:=.Cells(8, m), MaxMinVal:=2, ByChange:=.Cells(5, m).Resize(3), _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve
' not working - message window will be appear
Application.DisplayAlerts = False
Next m
End With
End Sub指纹:
Trying to process range [$B$5:$B$7] to minimize value in cell $B$8
Trying to process range [$C$5:$C$7] to minimize value in cell $C$8发布于 2022-09-10 20:10:22
问题解决了。解决方案在问题中被详细描述为“编辑”。
https://stackoverflow.com/questions/73667876
复制相似问题