Excel Vba后藤元';我不能正常工作

Excel Vba后藤元';我不能正常工作,excel,vba,if-statement,goto,Excel,Vba,If Statement,Goto,嗨,我一直在玩“如果”,“那么”,“和”和“转到” 我想我已经掌握了所有的窍门,除了“Goto”,很多次我都无法让它发挥作用 我不确定是因为我用错了“如果”,还是因为我用错了“转到”。有人可以看看这个代码,告诉我我做错了什么。因为我经常使用“如果”语句,所以如果我能以最好、正确的方式使用它,那就太好了。是的,我在下面的代码中知道我使用了activesheet,我应该在不使用activesheet的情况下编写代码,因为这里的统计数据中有很多人,但我还不确定如何使用activesheet Colum

嗨,我一直在玩“如果”,“那么”,“和”和“转到”

我想我已经掌握了所有的窍门,除了“Goto”,很多次我都无法让它发挥作用 我不确定是因为我用错了“如果”,还是因为我用错了“转到”。有人可以看看这个代码,告诉我我做错了什么。因为我经常使用“如果”语句,所以如果我能以最好、正确的方式使用它,那就太好了。是的,我在下面的代码中知道我使用了activesheet,我应该在不使用activesheet的情况下编写代码,因为这里的统计数据中有很多人,但我还不确定如何使用activesheet

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

帮你自己和未来一个忙:除了错误处理之外,不要使用GOTOs

你现在所做的事叫做

您的代码应该是:

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

这是因为您在同一行中使用了
GoTo
。将GoTo放在下一行,将代码块放在
Else
部分的
If
中。如果我同意
GoTo
应被视为有害(),则只需删除结尾即可,但您可以提到它是VBA中错误处理所必需的。感谢您的回答,非常感谢!谢谢你的链接Noceo@noceo自从你发表这篇评论以来,我根本没有编辑过我的答案。请你把它再读一遍好吗?因为“错误处理”异常已经存在。有趣的是,它仍然没有读取单元格A1中的新内容(我只是在单元格中写入了新内容,所以应该可以正常工作?