【发布时间】:2016-06-09 09:55:24
【问题描述】:
我遇到了问题(我之前已经发布过),但我认为我错过了一些愚蠢的东西。我有一个循环在 A4-A12 中的 9 个团队中运行,并获取每个团队名称并运行我的名为 Dataorangise 的子程序,这为 9 个团队中的每个团队运行一个循环,但它不起作用
我拥有的是
Sub Looproutine()
Dim TeamName As String
For i = 4 To 12
TeamName = Sheets("Parameter").Range("A" & i).Value 'identify the location
Call Dataorganise(TeamName) ' Call subroutine
Next i
End Sub
那么它正在运行的代码是
Sub Dataorganise(TeamName As String)
Sheets("Data").Range("A:X").copy Destination:=Sheets(TeamName).Range("A1")
Columns("R:R").Select
Selection.AutoFilter
ActiveSheet.Range("$R$1:$R$1048576").AutoFilter Field:=1, Criteria1:= _
TeamName
Columns("A:J").Select
Selection.Delete Shift:=xlToLeft
Columns("B:G").Select
Selection.Delete Shift:=xlToLeft
Columns("C:G").Select
Selection.Delete Shift:=xlToLeft
Range("A1:C1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.copy
Range("E1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("A:D").Select
Range("D1").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Columns("A:C").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
TeamName & "!R1C1:R1048576C3", Version:=xlPivotTableVersion12). _
CreatePivotTable TableDestination:=TeamName & "!R1C5", TableName:= _
"PivotTable7", DefaultVersion:=xlPivotTableVersion12
【问题讨论】:
-
我认为 TeamName = Sheets("Paramets").Range("A4" & CStr(i)).Value 应该是 TeamName = Sheets("Parameres").Range("A " & i).值
-
感谢您的回答。我仍然在 "Sheets("Data").Range("A:X").copy Destination:=Sheets("TeamName").Range("A1")" 行出现错误
-
您对 DataOrganise 的定义在输入中不接受任何参数,并且您正在使用参数调用它。您应该使用参数定义 Dataorganise:
Sub DataOrganise(Teamname as String)... -
当我用我的 Teamname 参数定义它时,我仍然在“Sheets("Data").Range("A:X").copy 目标行的 Dataorganise 子中收到错误: =Sheets("TeamName").Range("A1")"
-
就像@VincentG 提到的,您需要将 Sub Dataoragnise() 更改为 Sub Dataoragnise(TeamName as string)。另外,您实际上是否有名为“TeamName”的工作表?或者您是否要访问以 TeamName 命名的工作表?如果是后者,请丢失“”,只需键入 Sheets(TeamName)
标签: vba excel loops subroutine