Vba Goto 将无法正常工作
Vba Goto won't work properly
大家好,我一直在玩 "If" "Then" "And" 和 "Goto"
我想我已经掌握了除了 "Goto" 之外的所有技巧,但很多次我无法让它工作
我不确定是因为我使用了 "If" 错误还是因为我使用了错误的 "Goto" 。有人可以看看这段代码,告诉我我做错了什么吗?因为我经常使用 "If" 语句,所以如果我以最好和正确的方式使用它会很好。是的,我知道在下面的代码中我使用了 activesheet 并且我应该在不使用 activesheet 的情况下执行代码,因为这里有很多人统计但我不确定如何使用
Columns(1).Insert Shift:=xlRight
尚未激活 sheet
这里是代码,我的单元格 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
让自己和未来受益:除了错误处理之外,不要将 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
大家好,我一直在玩 "If" "Then" "And" 和 "Goto"
我想我已经掌握了除了 "Goto" 之外的所有技巧,但很多次我无法让它工作 我不确定是因为我使用了 "If" 错误还是因为我使用了错误的 "Goto" 。有人可以看看这段代码,告诉我我做错了什么吗?因为我经常使用 "If" 语句,所以如果我以最好和正确的方式使用它会很好。是的,我知道在下面的代码中我使用了 activesheet 并且我应该在不使用 activesheet 的情况下执行代码,因为这里有很多人统计但我不确定如何使用
Columns(1).Insert Shift:=xlRight
尚未激活 sheet
这里是代码,我的单元格 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
让自己和未来受益:除了错误处理之外,不要将 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