【问题标题】:Excel VBA Code (Goal Seek) Code SimplificationExcel VBA 代码(目标搜索)代码简化
【发布时间】:2020-02-18 22:31:18
【问题描述】:

我完全是 VBA 新手 - 到目前为止,我“编码”的所有内容都完全来自 Record Macro 函数。宏有效,但它非常笨重。 本质上,我要做的是运行目标搜索功能,获取答案,然后将其放入单元格中。接下来,我将递增到下一个输入,并再次执行该过程(然后再执行 38 次)。以下是前 2 个增量:

Range("B11").Select
    ActiveCell.FormulaR1C1 = "=R[-8]C[13]"
    Range("C37:D37").Select
    Range("C37").GoalSeek Goal:=0, ChangingCell:=Range("A33")
    Range("A33:B37").Select
    Selection.Copy
    Range("P3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("R11").Select

Range("B11").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=R[-7]C[13]"
    Range("C37:D37").Select
    Range("C37").GoalSeek Goal:=0, ChangingCell:=Range("A33")
    Range("A33:B37").Select
    Selection.Copy
    Range("P4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("P5").Select

C37:D37 是我的目标搜索公式,A33:B37 是我复制并粘贴到 P 列的输出。 我想与一些同事分享这段代码,但从目前的状态来看,它非常不专业。有什么想法吗?

谢谢!

【问题讨论】:

标签: excel vba


【解决方案1】:

Pᴇʜ - 谢谢你的回答;简单,但有效。这就是我需要的。 万一将来有人偶然发现这个,这就是我最终使用的。

Sub Calculation()

Dim x As Long

For x = 1 To 40 
ThisWorkbook.Worksheets("Sheet1").Range("B11").Value = ThisWorkbook.Worksheets("Sheet1").Cells(2 + x, 15)
ThisWorkbook.Worksheets("Sheet1").Range("C37").GoalSeek Goal:=0, ChangingCell:=ThisWorkbook.Worksheets("Sheet1").Range("A33")
ThisWorkbook.Worksheets("Sheet1").Cells(2 + x, 16) = ThisWorkbook.Worksheets("Sheet1").Range("A33").Value 

Next

End Sub

【讨论】:

  • 还有两个建议:① Dim x As Long 因为 Excel 的行数超过了 Integer 可以处理的行数(以及 there is no benefit in using Integer at all)。 ② 切勿使用RangeCells 而不指定它们在哪个工作簿/工作表中,否则您迟早会遇到问题。始终指定例如。 ThisWorkbook.Worksheets("Sheet1").Range(…) 或使用变量 Dim MySheet As Worksheet: Set MySheet = ThisWorkbook.Worksheets("Sheet1") 并像 MySheet.Range(…) 一样使用它。
  • 再次感谢您!我已经在这里更新了我的答案以供后代使用。
  • 还有更多CellsRange 对象需要指定。我又数了 4 个。
  • 糟糕。我在自己的宏(已经超越了这个)中捕捉到了它,但不是在这里。我又更新了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
相关资源
最近更新 更多