【问题标题】:Loop in Excel VBA and produce output for each iteration在 Excel VBA 中循环并为每次迭代生成输出
【发布时间】:2021-05-14 01:59:51
【问题描述】:

我正在尝试通过创建循环来简化现有的宏录制。

在 Sheet1 上有一个活动场景设置为 1(“F4”)

'这是由用户手动从1改为6

当单元格 ("F4") 发生变化时,单元格 ("F8") 中会产生相应的输出。

我想创建一个循环遍历每个场景 (1-6) 的宏,然后将单元格 (“F8”) 中每个场景的相应输出复制并粘贴到 Sheet2 作为“特殊值”而无需任何公式.例如,场景 1 的输出与 sheet2 上的单元格 ("G25") 相关。

你知道如何简单地做到这一点吗?

这就是我的大致方法。

  Dim Scenario As Integer
    Dim Sheet1 As Worksheet
    Dim Sheet2 As Worksheet
    
    Set Sheet1 = ActiveWorkbook.Sheets("Sheet1")
    Set Sheet2 = ActiveWorkbook.Sheets("Sheet2")
    
       Sheet1.Range("F4").Select 'this is where i don't understand how to run through options 1 to 5 in cell F4 
    
For Scenario = 1 To 5
    
        If Scenario.Value = 1 Then
        Sheet1.Range("F8").Copy
        Sheet2.Range("G25").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    
        ElseIf i.Value = 2 Then
          Sheet1.Range("F8").Copy
        Sheet2.Range("G25").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Else
        'nothing'
         End If
      Next Cell

【问题讨论】:

  • 这里是使用For loops 的教程。下面是使用Ranges 的教程。这是使用Scenarios的教程
  • 我不明白?为什么不直接在 sheet2 的 G25 中添加 =Sheet1!F8?

标签: excel vba


【解决方案1】:

看来你只需要迭代场景的值,然后复制,像这样:

Sub scenarios()
Dim Scenario As Integer
    Dim Sheet1 As Worksheet
    Dim Sheet2 As Worksheet
    
    Set Sheet1 = ActiveWorkbook.Sheets("Sheet1")
    Set Sheet2 = ActiveWorkbook.Sheets("Sheet2")
    
    For Scenario = 1 To 5
    
        Sheet1.Range("F4").Value = Scenario
    
        Sheet1.Range("F8").Copy

        '
        ' if elif to paste to different destinations according to scenario
        '
        Sheet2.Range("G25").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    
      Next
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 2015-05-03
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多