VBA动态循环宏

时间:2014-11-25 11:53:07

标签: excel vba excel-vba

我正在尝试构建一个循环宏是visual basic,它从一个工作表中的范围中获取单元格,并将它们放入由工作表的并行范围中的选项卡名称指向的其他工作表中的特定单元格中。范围需要是可变的 - 根据指示或多或少的数据。

这是当前适用于一个单元格的代码:

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

我需要把它变成一个循环宏。

非常感谢帮助。

2 个答案:

答案 0 :(得分: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

只需确保您的指定范围&#34; Tab_name&#34;是可以包含工作表名称的整个单元格范围(例如,如果您在A中列出工作表名称,有&#34; Tab_name&#34;指的是整个列),而不是一个单元格。

答案 1 :(得分: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