我在Excel VBA中使用代碼創建表單。下面的代碼片段提出了一個問題,在該問題中,用已經正確設置的名稱以某種方式創建了表單,然後,在我設置所述變量的唯一地方,它引發了一個問題,表明存在具有該名稱的表單在情況下變量)。以編程方式創建名稱衝突的表單
這裏是我的代碼:
Dim frmName As String
frmName = "frm_" & Replace(CStr(Nome_do_formulario), " ", "")
Set myForm = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
With myForm
.Properties("Caption") = Nome_do_formulario
.Properties("Width") = 300
.Properties("Height") = 270
.Properties("Name") = frmName
End With
需要明確的是,該錯誤是,當它到達線路:
Set myForm = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
不知怎的,它已經創建了名稱的形式年代後設定在with
聲明:
With myForm
.Properties("Caption") = Nome_do_formulario
.Properties("Width") = 300
.Properties("Height") = 270
.Properties("Name") = frmName '<- HERE
End With
然後,當它試圖運行with
聲明中斷,並表示具有該名稱的表單已經存在。
Public Sub Main()
Dim ac As autoCrud
Set ac = New autoCrud
ac.CreateCRUDView
End Sub
表單製作發生在ac.CreateCRUDView
內:
整個事情在另一個模塊跑去。
它是如何拉動名稱變量,然後設置它,然後嘗試使用它來製作具有相同名稱的另一個表單?
什麼是Nome_do_formulario? – BruceWayne
它只是設置爲常量的表單的可讀名稱 –
當您在新工作表上運行腳本時,它一次運行嗎?或者只有在你運行後纔會給你錯誤?並且要清楚,錯誤在於它的名稱(.Properties(「Name」)= frmName)是說有一個表單已經有了這個名字? – BruceWayne