VBAdynamic循环macros

我正在尝试构build一个循环macros,它是一个可视化的基础,它将一个工作表中的一个范围内的单元格放到特定的单元格中,并放置在由并行范围内工作表的标签名称指向的其他工作表中的特定单元格中。 范围需要变化 – 根据指导或多或less的数据。

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

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 

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

帮助将不胜感激。

有多种方法可以在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”是可以包含图表名称的单元格的整个范围(例如,如果你在A中列出你的图表名称,“Tab_name”是指整个列),而不是一个单元格。

我不完全确定你要完成什么,但下面是一个循环遍历命名范围的例子。 这是愚蠢的事实,它将循环通过命名的范围,如果你重新命名的范围的大小,它只会循环通过这些单元格。

希望这有助于

 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