我有一個宏,它創建一個名爲「最終」的工作表。我需要停止用戶編輯工作表名稱,以便我的代碼仍然可以正常工作。我已經做了一些研究,並拿出下面的代碼。此代碼適用於我自己,但問題是它需要用戶具有對Visual Basic項目的信任訪問權限。我無法讓所有用戶都這樣做。保護無信任訪問宏創建工作表的名稱
我使用的代碼:
Dim wb As Workbook, ws As Worksheet
Dim VBP As Object, VBC As Object, CM As Object
Dim strProcName As String
Set wb = ThisWorkbook
Set ws = wb.Sheets("Final")
Set VBP = wb.VBProject
strProcName = "Worksheet_SelectionChange"
With wb.VBProject.VBComponents(wb.Worksheets(ws.Name).CodeName).CodeModule
.InsertLines Line:=.CreateEventProc("Deactivate", "Worksheet") + 1, _
String:=vbCrLf & _
" Me.Name = "NameOfSheet""
End With
如果我有一個在宏創建了一個表,有沒有改變,如果不使用我鎖定/總重命名工作表的名稱的方式一個VBProject?
我剛剛測試過這段代碼。從我所看到的它將名爲「Final」的表更改爲「WasFinal」。它仍然允許我將表格名稱更改爲我想要的任何內容,例如「樹」。這是我試圖阻止的(用戶更改工作表的名稱)。 – user3737057
我將你的問題理解爲「即使用戶更改我的工作表名稱,我該如何保持我的代碼正常工作?」。通過允許您識別特定的工作表,無論其名稱如何,您都可以這樣做。我的「測試器」代碼僅僅是您應用它的一個例子(即表格名稱更改是模仿用戶操作)。 –