2017-04-20 101 views
-2

在我的代碼中,我使用了一些表單的代號。表單代號不被識別

問題是,當我通過使用窗體執行宏時,它無法識別代碼名(該變量接收空值)。

可能是什麼原因?

Dim sCodeName As String 

' Get the codename of the newly created sheet 
sCodeName = Worksheets(atar).CodeName 

'atar'是一個變量,其中包含我的一張表的名稱。

謝謝。

+1

我不知道你爲什麼試圖在一個字符串變量中存儲工作表的'CodeName'。然而,你可以通過像MsgBox Worksheets(atar).CodeName'這樣的'MsgBox'替換'sCodeName ='來輕鬆驗證上述結果。如果存在名稱存儲在'atar'中的工作表,那麼您將在消息框中看到'CodeName'。如果沒有這樣的表單,您將收到錯誤消息。順便說一句,下面的插圖可能有助於識別任何給定圖紙的代碼名稱:http://stackoverflow.com/a/42815407/1153513 – Ralph

回答

0

使用函數來檢查一個代碼名稱

Function WorksheetCodeNameExists(wb As Workbook, sCodeName As String) As Boolean 
    Dim s As String 
    Dim ws As Worksheet 

    WorksheetCodeNameExists = False 
    For Each ws In wb.Worksheets 
     If StrComp(ws.CodeName, sCodeName, vbTextCompare) = 0 Then 
      WorksheetCodeNameExists = True 
      Exit For 
     End If 
    Next 
    Set ws = Nothing 
End Function 
1

圍棋的存在到代碼視圖,向左看到您的VBA項目,其表和模塊。選擇有問題的工作表並查看屬性窗口。

您看到一個名爲「(Name)」的字段和一個名爲「Name」的字段。 「(名稱)」是代碼名稱,「名稱」是工作表名稱。現在比較代碼名稱和輸出。

編輯: @Ralph更快,並提供了一個完美的圖片與完全相同的信息。