【问题标题】:How to set goal seek value by a input box?如何通过输入框设置目标搜索值?
【发布时间】:2019-11-04 15:10:44
【问题描述】:

我有一个 excel 文件,我必须在其中运行目标 seek vba 以达到一定的数字。但是,如果我在其他单元格中运行它,每次我都需要手动更改目标搜索号码。有什么方法可以弹出一个输入框,我可以在其中输入所需的数字,然后宏将运行以完成操作?

在下面的代码中,目标搜索设置为 40。但是当我需要目标时,我必须手动更改数字。我期待一些扩展,每次运行宏时都需要一个目标搜索号码。请问有什么办法吗?

'
' Run_DIO Macro
'
' Keyboard Shortcut: Ctrl+q
'

    ActiveCell.GoalSeek Goal:=40, ChangingCell:=ActiveCell.Offset(-4, -1).Range( _
        "A1")
    ActiveCell.Offset(-3, -1).Range("A1").Select
    Selection.Copy
    ActiveCell.Offset(-1, 0).Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveCell.Offset(4, 2).Range("A1").Select
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    当然...只需添加一个变量:

    Dim iGoal As Integer
    iGoal = InputBox("Enter Goal")
    ActiveCell.GoalSeek Goal:=iGoal, ChangingCell:=ActiveCell.Offset(-4, -1).Range( _
        "A1")
    

    只是希望他们输入一个数字,否则你会得到一个错误。

    如果你有一个循环,在循环开始之前获取输入:

    Dim iGoal As Integer
    iGoal = InputBox("Enter Goal")
    
    ' code to start loop goes here
    
    ActiveCell.GoalSeek Goal:=iGoal, ChangingCell:=ActiveCell.Offset(-4, -1).Range( "A1")
    
    ' also the rest of the code you want to loop goes here
    
    ' code to end loop goes here
    

    【讨论】:

    • 首先感谢您的宝贵意见。发布后,我几乎到达那里。但我面临的主要问题是,当我需要对近 200 个单元重复此操作时。这意味着,我需要输入 200 次。实际上,我想运行一次设置目标的代码,它会一直运行到找到相关引用。
    • 实际上,我想运行一次设置目标的代码,它会一直运行到找到相对引用为止。实际上我需要在一个具有相同目标的范围内运行它。
    • 您的代码显示没有循环...所以如果您有循环,只需将输入框放在循环之外...我会更新答案
    • 如果您的问题超出了您最初指定的范围,那么您将需要提出一个新问题。
    • 我明白你的意思,你是对的,但我不是专业的编码员。该代码可以应用于单个单元格。但我正在尝试运行 5 个单元格的代码,即 C10:G10。那时我需要输入 5 次,而我试图在整个范围内输入一次。
    猜你喜欢
    • 2023-03-23
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2016-06-13
    相关资源
    最近更新 更多