Vba Goto无法正常工作

时间:2017-10-09 09:53:14

标签: excel vba if-statement goto

大家好我一直在玩#34;如果" "然后" "而"和"转到"

我认为除了" Goto"很多时候我无法让它发挥作用 我不确定是不是因为我正在使用"如果"错误或它是因为我使用" Goto"错误。有人可以看看这段代码,告诉我我做错了什么。因为我使用"如果"很多陈述,如果我以最好和正确的方式使用它会很好。是的,我知道在下面的代码中我使用了活动表,我应该在不使用活动表的情况下执行代码,因为这里有很多人,但我还不确定如何使用

Columns(1).Insert Shift:=xlRight

尚未激活工作表

所以这里的代码我的单元格A1的值为" new"所以应该激活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
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

1 个答案:

答案 0 :(得分:1)

让自己和未来成为一个好处:除了错误处理之外,不要使用GOTO。

您现在正在做的事情称为Spaghetti code

您的代码应为:

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