繁体   English   中英

编译错误:遍历工作表时,限定词无效

[英]Compile error: invalid qualifier when looping through worksheets

如果单元格的日期(保存在G行中)落在给定的范围内,我试图将其从几个工作表复制到摘要工作表中。 我希望宏在每个工作表中的g列中循环,并在存在下匹配项的地方提取信息,然后再移至下一个工作表以执行相同的操作。 目前,我的代码出现了一个编译错误:rng中x值的限定符无效...我是VBA的新手,看不到我做错了什么。

Sub Copy_ProjectSummaryData()
Dim i As Integer
Dim ws_num As Integer
Dim rng As Range, destRow As Long
Dim starting_ws As Worksheet
Dim shtDest As Worksheet
Dim c As Range
Dim startdate As Date
Dim enddate As Date
Set starting_ws = ThisWorkbook.Worksheets(1) 'remember which worksheet is 
active in the beginning
ws_num = ThisWorkbook.Worksheets.Count
Set shtDest = Sheets("Summary")

destRow = 4 'start copying to this row
destRow2 = 4 'start copying to this row
destRow3 = 4 'start copying to this row
destRow4 = 4 'start copying to this row
startdate = CDate(InputBox("Begining Date"))
enddate = CDate(InputBox("End Date"))

'Clear contents from sheet before running new report
Range("A4").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.ClearContents

'Find and pull in Escalated Risks within the date range for the report
For i = 1 To ws_num
ThisWorkbook.Worksheets(i).Activate
        Set rng = 
Application.Intersect(ThisWorkbook.Worksheets(i).Range("G16:G20"), 
ThisWorkbook.Worksheets(i).UsedRange)
    For Each c In rng.Cells
         If c.Value >= startdate And c.Value <= enddate Then
        'Starting 6 cells to the left of c (col A),
        '  copy an 8-cell wide block to the other sheet,
        '  pasting it in Col B on row destRow
        c.Offset(0, -6).Resize(1, 8).Copy _
        shtDest.Cells(destRow, 2)
        destRow = destRow + 1
      End If
      Next
Next

'Find and paste Risk Project Name
For i = 1 To ws_num

ThisWorkbook.Worksheets(i).Activate

Set rng = Application.Intersect(ThisWorkbook.Worksheets(i).Range("G16:G20"), 
ThisWorkbook.Worksheets(i).UsedRange)
For Each c In rng.Cells
    If c.Value >= startdate And c.Value <= enddate Then
    '  copy C3 to the other sheet,
    '  pasting it in Col A on row destRow
    Range("C3").Copy _
    shtDest.Cells(destRow2, 1)
    destRow2 = destRow2 + 1
    End If
Next
Next

'Find and pull in New Issues within the date range for the report
For i = 1 To ws_num
ThisWorkbook.Worksheets(i).Activate

    Set rng = 
Application.Intersect(ThisWorkbook.Worksheets(i).Range("G22:G26"), 
ThisWorkbook.Worksheets(i).UsedRange)
    For Each c In rng.Cells
         If c.Value >= startdate And c.Value <= enddate Then
        'Starting 6 cells to the left of c (col A),
        '  copy an 8-cell wide block to the other sheet,
        '  pasting it in Col B on row destRow
        c.Offset(0, -6).Resize(1, 8).Copy _
        shtDest.Cells(destRow3, 11)
        destRow3 = destRow3 + 1
      End If
      Next
 Next
'Find and paste Issues Project Name
For i = 1 To ws_num

ThisWorkbook.Worksheets(i).Activate
    Set rng = 
Application.Intersect(ThisWorkbook.Worksheets(i).Range("G22:G26"), 
ThisWorkbook.Worksheets(i).UsedRange)
For Each c In rng.Cells
    If c.Value >= startdate And c.Value <= enddate Then
    '  copy C3 to the other sheet,
    '  pasting it in Col A on row destRow
    Range("C3").Copy _
    shtDest.Cells(destRow4, 10)
    destRow4 = destRow4 + 1
    End If
Next
Next

starting_ws.Activate 'activate the worksheet that was originally active

Range("B4").Select
Selection.Copy
Range("A4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Range("K4").Select
Selection.Copy
Range("J4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

End Sub

您已将X声明为Long Long没有范围。 您应该使用Sheets(X)而不是X

Set rng = Application.Intersect(Sheets(x).Range("G:G"), Sheets(x).UsedRange)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM