2014-11-25 66 views
0

我想構建一個循環宏是視覺基本,它將一個工作表中的一個範圍中的單元格放入到並行範圍中工作表的標籤名稱指向的其他工作表中的特定單元格中。範圍需要變化 - 根據指導或多或少的數據。VBA動態循環宏

這是目前工作的一個單元的代碼:我需要把它變成一個循環宏

Sub Ticker_input() 

    Dim wsname As String 

    wsname = ActiveCell.Value 

    Worksheets("Summary").Range("Tab_name").Select 
    Worksheets(wsname).Range("CapIQ_ticker").Value = ActiveCell.Offset(0, 1) 

End Sub 

幫助將不勝感激。

+0

我給出了一個循環遍歷命名範圍的例子,但是您也可以通過查看需求 - 在沒有數據示例的情況下很難說明這一點。 – Kevin 2014-11-25 12:31:26

回答

0

我不完全確定你在做什麼,但下面是一個循環遍歷命名範圍的例子。實際上,它會循環通過指定的範圍,如果您重置指定範圍的大小,它只會循環遍歷這些單元格。

〜希望這會有所幫助。

Sub loopRnage() 

'create your variable outside the loop 
Dim wsname 

'tell the loop the range you want to loop through 
For Each cell In ThisWorkbook.Sheets("Stocks").Range("symbols") 

    'set the variable to the current cell 
    wsname = cell.Value 
    Worksheets("Summary").Range("Tab_name").Select 
    'use the variable to set the target name 
    Worksheets(wsname).Range("CapIQ_ticker").Value = cell.Offset(0, 1) 

Next cell 

End Sub 
1

在VBA中有多種循環方法。這是一個可以適用於你的情況的一種方法:

Sub Ticker_input() 

    On Error Resume Next 
    Application.ScreenUpdating = False 

    Dim wsname As String 
    Dim rTabNames As Range, c As Range 

    Set rTabNames = Worksheets("Summary").Range("Tab_name") 

    For Each c In rTabNames 
     If c.Value <> "" Then 
      wsname = c.Value 
      Worksheets(wsname).Range("CapIQ_ticker").Value = c.Offset(0, 1).Value 
     End If 
    Next 

    Application.ScreenUpdating = True 

End Sub 

只要確保你的命名範圍「TAB_NAME」是一個可以包含表名稱(例如,如果您列出一個您的工作表名稱細胞的整個範圍,「Tab_name」指的是整個列),而不是一個單元格。

+0

非常感謝 - 額外的問題是範圍是動態的,換句話說,它可以更大更小 - 是否有一種方法來倒計時? – 2014-11-25 15:21:53

+0

這沒問題。只要你的「Tab_name」範圍指向範圍可能的最大大小(可能是整個列)。循環忽略空值使用'如果c.Value <>「」然後',所以沒有關係,如果命名的範圍大於它所包含的數據。 – BobbitWormJoe 2014-11-25 18:51:52