Vba Goto将无法正常工作

大家好我一直玩“如果”“那么”“和”和“转到”

我想我得到了除了“转到”之外的所有东西,我不知道是否因为我使用了“如果”错误,或者是因为我使用了“转到”错误。 有人可以看看这个代码告诉我我做错了什么。 因为我使用“If”语句很多,所以如果我使用最好和最正确的方法将会很好。 是的,我知道在下面的代码中,我使用activesheet,我应该做的代码,而不使用activesheet,因为在这里stats很多人,但我不知道如何使用

Columns(1).Insert Shift:=xlRight 

而没有激活表

所以这里是代码我有单元格A1的价值“新”所以转到应该被激活,但它不是。

 Sub con() Set tsheet = ThisWorkbook.Sheets("Players") Sheets("Players").Activate ActiveSheet.Columns(1).Insert Shift:=xlRight Dim lngLastRow As Long If tsheet.Range("A1") = "new" Then GoTo AlR Else lngLastRow = Cells(Rows.Count, "B").End(xlUp).Row Range("A2").Formula = "=B2 & "" "" & C2 & "" "" & G2 & "" "" & D2" Range("A2").Copy Range("A2:A" & lngLastRow) tsheet.Range("A1").Value = "new" End If AlR: MsgBox "Column is already present" End Sub 

让自己和未来有个好处:不要为了error handling而使用GOTO。

你现在在做什么叫做意大利面代码 。

你的代码应该是:

 Sub con() Set tsheet = ThisWorkbook.Sheets("Players") Sheets("Players").Activate ActiveSheet.Columns(1).Insert Shift:=xlRight Dim lngLastRow As Long If tsheet.Range("A1") = "new" Then MsgBox "Column is already present" else lngLastRow = Cells(Rows.Count, "B").End(xlUp).Row Range("A2").Formula = "=B2 & "" "" & C2 & "" "" & G2 & "" "" & D2" Range("A2").Copy Range("A2:A" & lngLastRow) tsheet.Range("A1").Value = "new" End If End Sub