[VBA ] if then的問題

作者: seanlin10421 (火車便當)   2022-09-09 00:38:36
我寫了一小段功能 大致如下:
若該檔不存在 則另存新檔
若該檔存在 則直接存檔
SaveFileName = "E:\test.xlsx" '存檔
If Dir(SaveFileName) = "" Then
.ActiveWorkbook.SaveAs (SaveFileName)
mybook.Close Savechanges:=False '關閉工作表且不將修改儲存
.Quit '關閉Excel
End If
If Dir(SaveFileName) <> "" Then
.ActiveWorkbook.Save
mybook.Close Savechanges:=False '關閉工作表且不將修改儲存
.Quit '關閉Excel
End If
以上 功能皆正常
然後我想把行數減短 就改成:
SaveFileName = "E:\test.xlsx" '存檔
If Dir(SaveFileName) = "" Then .ActiveWorkbook.SaveAs (SaveFileName)
mybook.Close Savechanges:=False '關閉工作表且不將修改儲存
.Quit '關閉Excel
If Dir(SaveFileName) <> "" Then .ActiveWorkbook.Save
mybook.Close Savechanges:=False '關閉工作表且不將修改儲存
.Quit '關閉Excel
到此 debug沒異常
但是執行起來
第二個if就掛了 不會save
請問這是何解??@@
作者: LPH66 (-6.2598534e+18f)   2022-09-09 00:50:00
注意原先的 End If, 你原先的程式裡條件成立後有三行程式改成後面這樣之後你在 Then 裡只執行第一行後兩行會無條件執行另外, 你可以查詢一下 Else 這個跟 If 常常放一起的關鍵字
作者: seanlin10421 (火車便當)   2022-09-09 01:22:00
那我可以把THEN之後的條件用:串成同一行嗎[email protected]@
作者: MOONRAKER (㊣牛鶴鰻毛人)   2022-09-09 11:23:00
then之後哪有什麼條件,那叫敘述。後面加endif就好了不需要用 : 這種還有行號時代的玩意 簡直退回40年前

Links booklink

Contact Us: admin [ a t ] ucptt.com