VBA的后藤将无法正常工作
大家好,我一直用“如果”,“然后”,“and”和“转到”VBA的后藤将无法正常工作
玩弄我觉得我得到了所有的窍门,除了“转到”多次我不能确定它的工作 我不确定是因为我使用了“如果”错误还是因为我使用了“转到”错误。有人可以看看这段代码,告诉我我做错了什么。因为我使用“If”语句很多,所以如果我以最好和正确的方式使用它,那将会很好。是的,我知道下面的代码,我使用activesheet和我应该做的代码,而无需用activesheet尽可能多的人工作在这里的统计,但我还没有确定如何使用
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
让自己和未来成为一个好处:不要为了错误处理而使用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
[意大利面条代码(https://en.wikipedia.org/wiki/Spaghetti_code) - 拼写检查 –
我同意'GoTo'应该被认为是有害的(https://en.wikipedia.org/wiki/Considered_harmful),但您可以提到它是VBA中的错误处理所必需的。 – Noceo
谢谢你的回答,非常感谢! –
它,因为你是在同一行中使用'GoTo'。将GoTo放在下一行,将'If'中的代码块放入'Else'部分。 –
只是删除结束时,如果 – Absinthe