[英]Excel VBA Macro Compile error: Expected End Sub
嘗試將我的代碼分配給在VBA中獨立工作的按鈕,但是將其添加到按鈕時收到以下錯誤;
編譯錯誤:預期結束子
我的代碼如下:
Sub Button1_Click()
Private Sub filename_cellvalue()
Dim Path As String
Dim filename As String
Path = Environ("userprofile") & "\Desktop\Invoices\"
filename = Range("K13")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=Path & filename & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub
VBA對我來說是新手,所以任何幫助將不勝感激。 謝謝。
您要兩次聲明一個過程: Sub Button1_Click()
和Sub filename_cellvalue()
。
您應該刪除一個。 如果要將代碼放入按鈕事件中,請刪除Sub filename_cellvalue()
Sub Button1_Click() Private Sub filename_cellvalue()
Sub
語句聲明過程范圍。 語法如下:
{accessibility} Sub {name} ({args})
{statements}
End Sub
正文中的{accessibility}
修飾符, {args}
參數列表和{statements}
是可選的(請注意,沒有訪問修飾符的過程是隱式的Public
而在許多其他語言中,包括VB.NET)默認為Private
;最好在此處明確顯示)。
這種語法使嵌套的 Sub
語句非法:
Sub DoSomething()
Sub Illegal()
End Sub
End Sub
因此,當編譯器遇到Sub
語句時,其后的所有內容都被視為過程主體的一部分,直到下一個End Sub
令牌為止。
如果Button1_Click
處理程序是合法的,則需要在 Sub filename_cellvalue
開始之前正確終止它:
Sub Button1_Click()
End Sub
Private Sub filename_cellvalue()
'...
End Sub
否則,需要刪除Sub Button1_Click()
不完整的語句。
就是說, filename_cellvalue
是過程的錯誤標識符: Sub
過程做了某些事情 ,它們的名稱應以動詞開頭。 例如, ExportAsPDF
將更合適。 請注意PascalCase
名稱,而不是lower_snake_case
:下划線字符在VBA中具有特殊含義,如Button1_Click
。
下划線將接口/事件源與接口成員/事件名稱分開:當Button1
對象引發其Click
事件時,將調用Button1_Click
,並將該過程命名為任何不同的方法都會中斷該對象與事件處理程序之間的鏈接:該過程永遠不會運行以響應Button1
的Click
。 當您進入涉及接口和多態性的更高級的,面向對象的編程概念時,在非處理程序過程中使用下划線(尤其是在公共場合) 會引起問題(閱讀:更多編譯錯誤)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.