Excel 循环遍历单元格范围B3-B21中的工作簿名称

Excel 循环遍历单元格范围B3-B21中的工作簿名称,excel,vba,loops,repeat,named-ranges,Excel,Vba,Loops,Repeat,Named Ranges,我有一个vba代码,可以在工作簿中打开一个工作表,并将某个范围复制到同一工作表中。下面的代码,我如何创建一个循环,而不是一次又一次地复制代码来更改单元格引用。而是在B3副本中打开图纸,在B27之前打开b4副本等?我环顾四周,但可能是我使用的搜索词到目前为止找不到解决方案 工作表(工作表(“内容”).范围(“B3”).值)。激活 范围(“B2”)。选择 要转到下一张图纸,我将手动将B3更改为b4,如何创建一个循环来为定义的Bx范围执行此操作 下面正在执行完整的代码 `Worksheets(Work

我有一个vba代码,可以在工作簿中打开一个工作表,并将某个范围复制到同一工作表中。下面的代码,我如何创建一个循环,而不是一次又一次地复制代码来更改单元格引用。而是在B3副本中打开图纸,在B27之前打开b4副本等?我环顾四周,但可能是我使用的搜索词到目前为止找不到解决方案

工作表(工作表(“内容”).范围(“B3”).值)。激活
范围(“B2”)。选择

要转到下一张图纸,我将手动将B3更改为b4,如何创建一个循环来为定义的Bx范围执行此操作

下面正在执行完整的代码

`Worksheets(Worksheets("Contents").Range("B3").Value).Activate
Range("B2").Select
Count rows in raw data

intRowsused = ActiveSheet.UsedRange.Rows.Count 'count rows used in the table

'Copy

Range("B3:T" & intRowsused).Copy

Sheets("Master Template").Select

Set rng = ActiveSheet.Range("A:T")

    lastRow = rng.Find(What:="*", After:=rng.Cells(1), Lookat:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row

writeRow = lastRow + 1

Range("A" & writeRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False `
任何帮助都将不胜感激。
谢谢

您可以编辑代码以包含“For”循环。我只想用“B&I”替换您对B3的所有引用


这就是避免使用select的方法

Option Explicit 
Sub CopyToMaster()

    Dim wb As Workbook
    Dim wsContents As Worksheet, wsSource As Worksheet, wsTarget As Worksheet
    Dim rngSource As Range, rngTarget As Range, cell As Range
    Dim targetRow As Long

    Set wb = ActiveWorkbook ' or thisworkbook
    Set wsTarget = wb.Sheets("Master Template")
    Set wsContents = wb.Sheets("Contents")

    targetRow = wsTarget.Cells(Rows.Count, 1).End(xlUp).Row + 1

    For Each cell In wsContents.Range("B3:B5")
        Set wsSource = wb.Sheets(cell.Value)

        Set rngSource = wsSource.Range("B3:T" & wsSource.UsedRange.Rows.Count)
        rngSource.Copy

        Set rngTarget = wsTarget.Range("A" & targetRow)
        rngTarget.PasteSpecial Paste:=xlPasteValues

        targetRow = targetRow + rngSource.Rows.Count
    Next

    MsgBox "Copy complete", vbInformation
End Sub

我有几个问题和答案,显示代码符合你的要求-看一看…嗨,谢谢你回复我-不确定我输入的是什么错误,下面是代码的一部分,我已经修改,以循环通过工作表与你的建议。它以奇怪的顺序在工作表中工作&没有复制所有
工作表(工作表(“内容”)。范围(“B”和“i”)。值)。激活范围(“B2”).选择
Variables'Dim lngreportrowsed As Long Dim lastRow As Long Dim writer low As Long Dim rng As Range Dim targetSheetName As String Dim targetSheetName As found As Boolean Dim sheet As worker Dim i As Long For i=2至27`请不要在注释中添加冗长的代码。旁注,试着在你的代码中解决它,使用你的建议,我没有删除代码的某些方面,这停止了循环。再次感谢-非常感谢。救了我一个任务!!很高兴你能做到!
Option Explicit 
Sub CopyToMaster()

    Dim wb As Workbook
    Dim wsContents As Worksheet, wsSource As Worksheet, wsTarget As Worksheet
    Dim rngSource As Range, rngTarget As Range, cell As Range
    Dim targetRow As Long

    Set wb = ActiveWorkbook ' or thisworkbook
    Set wsTarget = wb.Sheets("Master Template")
    Set wsContents = wb.Sheets("Contents")

    targetRow = wsTarget.Cells(Rows.Count, 1).End(xlUp).Row + 1

    For Each cell In wsContents.Range("B3:B5")
        Set wsSource = wb.Sheets(cell.Value)

        Set rngSource = wsSource.Range("B3:T" & wsSource.UsedRange.Rows.Count)
        rngSource.Copy

        Set rngTarget = wsTarget.Range("A" & targetRow)
        rngTarget.PasteSpecial Paste:=xlPasteValues

        targetRow = targetRow + rngSource.Rows.Count
    Next

    MsgBox "Copy complete", vbInformation
End Sub