Ich habe ein Excel-Makro, das eine andere Arbeitsmappe erstellt, die der Benutzer ändern kann. Wenn ich versuche, Daten in einer Zelle in der neuen Arbeitsmappe einzugeben, erhalte ich jedoch den Fehler "Die Zelle oder das Diagramm, das Sie ändern möchten, befindet sich auf einem geschützten Blatt." Das Blatt in der Makroarbeitsmappe ist tatsächlich geschützt, aber dieses Blatt ist zu dem Zeitpunkt, zu dem der Fehler auftritt, nicht sichtbar. Wenn ich versuche, die sichtbare, neu erstellte Arbeitsmappe zu schließen, wird die Makroarbeitsmappe geschlossen. Das letzte, was mein Makro tut, ist das Blatt in der neuen Arbeitsmappe zu aktivieren. Was muss ich tun, um diese Arbeit zu machen? Das Schließen des Makros schließt natürlich sein eigenes Arbeitsbuch, aber das ist nicht das, was ich tun möchte, da der Benutzer ein anderes Makro in derselben Arbeitsmappe benötigt, um die Änderungen auf dem neuen Arbeitsblatt zu verarbeiten.Excel 2016: Aktives Arbeitsblatt ist nicht das sichtbare
Das Programm hat über 6000 Zeilen Code (bis jetzt), aber hier ist eine der Routinen, die das Problem verursacht.
Private Sub z3_BudgetPrepUpd()
'Build a new workbook initialized to let the user modify data
'for an existing fiscal-quarter budget.
'When this routine executes,
' UserForm1 is still active.
Dim strTracer As String 'error-handling tracer for this subroutine
Dim strFyrQtr As String
On Error GoTo abend
If blnAbort Then Exit Sub
If blnAbortGlobal Then Exit Sub
'Find out which ListBox item the user selected:
If UserForm1.ListBox1.ListCount < 1 Then GoTo aa9000 'ListBox is empty
If UserForm1.ListBox1.ListIndex < 0 Then 'No item selected
strMsgTitle = udtPrm.msgTtl
strMsgPrompt = "Please select a fiscal quarter to update."
Call z0_MsgBox
GoTo aa9000
End If
strFyrQtr = UserForm1.ListBox1.Value 'Selected item in ListBox
'Close UserForm1:
UserForm1.Hide
ThisWorkbook.Sheets(c_WKS_WELCOME).Activate
'Build the udtBgt() array with data for the specified quarter:
lngBgtHiNdx = -1
Call zz_GetBudgetForQtr(strFyrQtr)
If blnAbort Then GoTo aa9000
'Build a new workbook for the user to update budget amounts:
Workbooks.Add
Set wkbNewBook = ActiveWorkbook
'Save the names of the default worksheets
'so we can delete them later:
strDfltSheets() = z0_SheetNames(wkbNewBook)
'Build a worksheet with data from the udtBgt() array:
Call z3_BuildBudgetUpdSheet
If blnAbort Then GoTo aa9000
'Delete the default worksheets:
Call z0_DeleteSheets(wkbNewBook, strDfltSheets())
If blnAbort Then GoTo aa9000
wkbNewBook.Sheets(c_WKS_IPT_BUDGET).Activate
'Excel 2016 Bug:
'We need to close ThisWorkbook to allow the user
'to work with the book we just created:
Application.DisplayAlerts = False
ThisWorkbook.Close
aa9000:
Exit Sub
abend:
lngErr = Err.Number
strErr = Err.Description
blnAbort = True
Application.Cursor = xlDefault 'no more hourglass
strMsgTitle = "Program Error"
strMsgPrompt = "The following error occurred:" & Chr(10) & Chr(10) & _
"Error No. " & CStr(lngErr) & Chr(10) & _
"Error Description: " & strErr & Chr(10) & _
"Subroutine: z3_BudgetPrepUpd" & Chr(10) & _
"Tracer: " & strTracer
Call z0_MsgBox
Resume aa9000
End Sub
Wenn Sie Ihre Codes anzeigen, wäre es einfacher, die Probleme zu identifizieren – Rosetta
Ich habe Code von einer der Problemroutinen hinzugefügt, aber ich bin mir nicht sicher, wie viel das hilft. Vielen Dank. –
In welcher Zeile tritt der Fehler bitte auf? und Änderungen bitte senden. –