[英]Problems with go to label function
我正在运行以下宏来打开 130 个 excel 文件,并将它们复制到每个实体的单独工作表中。 它有点适合我想做的事情(尽管可能不是最有效的)。 一旦工作表已经存在,我希望宏不再创建新工作表,而是跳过这一步。
我正在尝试为此使用错误代码,但是我无法使以下部分正常工作:
On Error Goto skip
即使此代码下面的公式有错误,它也会不断返回通知“下标超出范围”。
有谁知道我在这里做错了什么?
Sub Macro2()
'Select item Location
Row = 2
nextitem: Row = Row + 1
' Create sheet
Sheets("Location").Select
Week = ActiveSheet.Range("c1").Value
Complete = ActiveSheet.Range("b" & Row).Value
Entity = ActiveSheet.Range("a" & Row).Value
Workbook_Entity = Entity & " - Week " & Week & ".xlsx"
If Complete = "Yes" Then
GoTo nextitem
Else
On Error GoTo Skip
Sheets(Entity).Select
GoTo Skipped2
Exit Sub
Skip:
Sheets.Add(After:=Sheets(Sheets.Count)).Name = Entity
Skipped2:
'Open Workbooks
Workbooks.Open Filename:=ThisWorkbook.Path & "\location\" & Workbook_Entity
Sheets("Week - Hidden").Visible = True
Sheets("Week - Hidden").Select
Columns("A:G").Select
Selection.Copy
Windows("Overview.xlsm").Activate
Sheets(Entity).Select
Range("a1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Windows(Workbook_Entity).Activate
ActiveWorkbook.Save
Sheets("Week - Hidden").Visible = False
ActiveWindow.Close
'Rotate
If Item_Region = "003" Then
GoTo Enditall
Else
GoTo nextitem
Enditall:
End If
End If
End Sub
关闭但更好的仍然是
Function TryGetSheet(ByVal ipSheetName As String, ByRef opSheet as worksheet) as Boolean
On Error Resume Next
Set opSheet = ThisWorkbook.sheets(ipSheetName)
TryGetSheet = Err.Number = 0
On Error GoTo 0
End Function
我找到了答案,它为我解决了这个问题。 希望它也可以帮助其他人
If DoesSheetExists(s) Then
GoTo Skipped2
Else
Sheets.Add(After:=Sheets(Sheets.Count)).Name = Entity
Skipped2:
End If
具有以下功能
Function DoesSheetExists(sh As String) As Boolean
Dim ws As Worksheet
On Error Resume Next
Set ws = ThisWorkbook.Sheets(sh)
On Error GoTo 0
If Not ws Is Nothing Then DoesSheetExists = True
End Function
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.