2015-06-18 57 views
1

目前我有一個包含大約20個表格的項目,有時候我想對它們進行一些小的調整。所以我創建了一段代碼來刪除這些表單,然後以我想要的方式重新創建它們。在excel中爲表格提供一個名稱,用宏指定名稱

問題是,一行代碼不斷給我路徑/文件訪問錯誤(錯誤75)

這是一小塊代碼:

Sub makeForm(formName As String) 

    Dim form As Object 

    'These lines delete the old form 
    Set form = ThisWorkbook.VBProject.VBComponents(formName) 
    ThisWorkbook.VBProject.VBComponents.Remove VBComponent:=form  

    'This line creates the new form 
    Set form = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm) 

    'These lines give the new form a few properties 
    With form 
     .Properties("Name") = formName 'This is the line of code that gives the error 
     .Properties("Caption") = formName 
     .Properties("Width") = 320 
     .Properties("Height") = 242 
    End With 

End Sub 

是否有人可以告訴我,我怎麼能保證這個錯誤不再出現?順便說一句,這個錯誤也會出現,當我在這個宏失敗之後手動更改表單的名稱時,但是當宏在失敗之前我不這樣做。 PS:我是新來的這個網站,所以很抱歉,如果我犯了新秀錯誤。

+0

根據[msdn](https://msdn.microsoft.com/en-us/library/aa264531(v = vs.60).aspx),您無法在文檔中進行設計更改。你爲什麼不重命名現有的表單? – EngJon

+0

爲什麼不改變現有表單的屬性? – ChipsLetten

+0

我需要能夠檢索表單以使用它們。目前我使用這些名稱來確保我找回了正確的名稱,因此我需要給新表單提供我想要的名稱。 –

回答

0

刪除用戶窗體後保存工作簿似乎清除錯誤。

'These lines delete the old form 
Set form = ThisWorkbook.VBProject.VBComponents(formName) 
ThisWorkbook.VBProject.VBComponents.Remove VBComponent:=form 
Set form = Nothing 

ThisWorkbook.Save 

我猜Excel會在保存時刷新一些內部值。

+0

需要很長時間才能執行,但它有效。謝謝您的幫助! –

相關問題