我正在尝试构建一个循环宏是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
我需要把它变成一个循环宏。
非常感谢帮助。
答案 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