2017-05-08 138 views
0

我想为下面的步骤创建一个宏,但我是宏的新手,可以使用你的帮助。通过范围选择下拉循环

我有一张名为“TABLE”的工作表从单元格G11开始的10行的列表,每一行都有一个验证下拉列表(TRUE或FALSE)。以下是我想要做的。

  1. 宏开始之前,我希望他们都被设置为FALSE。

  2. 然后,我希望它从单元格G11开始,并从下拉列表中选择TRUE。整个工作手册都是基于此,所以一旦设置为TRUE,将会进行一些计算,然后我想从“SECURITIZATION”页面中获取结果并将其粘贴到名为“FINAL”的工作表中。

  3. 之后,我想再次转到“TABLE”表格,将单元格G11从TRUE切换到FALSE,然后转到单元格G12并从下拉列表中选择TRUE并粘贴“SECURITIZATION”页面中的结果低于G11的结果。

我经历了这个宏,但它从同一单元格中的下拉列表中选择不是列表。 VBA Loop Through drop down, copy range

这是我迄今为止

Sub SpitValues() 

Dim dvCell As Range 
Dim inputRange As Range 
Dim c As Range 
Dim i As Long 


'Which cell has data validation 
Set dvCell = Worksheets("Sheet1").Range("G11") 
'Determine where validation comes from 
Set inputRange = Evaluate(dvCell.Validation.Formula1) 


i = 1 
'Begin our loop 
Application.ScreenUpdating = False 
For Each c In inputRange 
    dvCell = c.Value 

    Worksheets("SECURITIZATION").Cells(i, "A1").Value = Worksheets("SECURITIZATION").Range("G30").Value 
    i = i + 1 
Next c 
Application.ScreenUpdating = True 
+0

欢迎来到SO。请阅读[如何问](http://stackoverflow.com/help/how-to-ask)。正如所写,这个问题是广泛的方式,真正回答没有somone写你的代码基地给你。如果您向我们展示了您尝试过的方式以及您在哪里遇到明确且具体的问题,我们可以更轻松地提供帮助。 –

+0

我刚刚编辑,让我知道,如果这有帮助。 – user2521517

+0

这确实有帮助。谢谢。然而,描述你需要什么和你的代码做了看似不同的事情。你需要哪些? –

回答

0

给这个一杆。它基于描述。它需要编辑您的特定副本|粘贴需求,你可以在笔记中看到。

Option Explicit 

Sub SpitValues() 

Dim wsTable As Worksheet 
Set wsTable = Worksheets("Table") 

Dim wsSecuritization As Worksheet 
Set wsSecuritization = Worksheets("Securitization") 

Dim wsFinal As Worksheet 
Set wsFinal = Worksheets("Final") 

With wsTable 

    .Range("G11").Resize(10, 1).Value = "FALSE" 

    Dim rCell As Range 
    For Each rCell In .Range("G11").Resize(10, 1) 

     rCell.Value = "TRUE" 

     'DoEvents 
     Application.Wait Now + TimeValue("0:00:10") 'wait for 10 seconds. 

     'adjust this to whatever is need for copy | paste operation 
     'I didn't see exact requirements for this so I just copy A1 each time below the last used row in column A 
     wsFinal.Range("A" & Rows.Count).End(xlUp).Offset(1).Value = wsSecuritization.Range("A1").Value 

     rCell.Value = "FALSE" 

    Next 

End With 


End Sub 
+0

谢谢你这有助于我如何使工作表暂停计算。宏现在复制并粘贴相同的值。它不会等待工作表刷新,然后复制粘贴 – user2521517

+0

@ user2521517 - 请参阅我的编辑以完成此操作。另一种方法可能是关闭自动计算和“wsSecuritization.Calculate”。但是,我一直没有发现这一点是可靠的。 –

+0

谢谢Scott帮助 – user2521517