2017-05-08 89 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