Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1840to1844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Blatt einblenden, aktivieren geht nicht
13.08.2021 16:37:36
Stefan
Hallo,
ich bin dabei ein Makro eines Kollegen für eine neue Anforderung anzupassen. Allerdings strandet das Makro ständig an einem Punkt.
Das Makro soll ein Blatt einblenden, aktivieren und dann einen Zellinhalt lesen.
Ich bin jedoch der Meinung, alles soweit "getan" zu haben, dass das Makro weitermachen kann. Allerdings wird weder das Blatt sichtbar eingeblendet, noch ausgewählt um die Zelle anzusprechen. An der fettmarkierten Stelle kommt der Fehler
Laufzeitfehler 1004 - Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.
Jemand eine Idee woran es liegen kann, dass es nicht passiert? Das Blatt wird einfach nicht eingeblendet und selektiert.
Über "rechte Maus" kann ich das Blatt einblenden. Es ist nicht veryHidden
Das ist der Code:

Private Sub ListBox1_Change()
ActiveWorkbook.Unprotect Password:="xxxxxxxx"
ActiveSheet.Unprotect Password:="cccccccc"
Blattname = ActiveSheet.Name
Worksheets("matrix").Visible = True
ActiveWorkbook.Unprotect Password:="xxxxxxxx"
ActiveSheet.Unprotect Password:="cccccccc"
Worksheets("matrix").Activate
ActiveSheet.Unprotect Password:="xxxxxxxx"
    Worksheets("matrix").Range("C17").Select
Range("C17").Select
ActiveCell.Formula = "=xxx!J2"
ActiveCell.Offset(1, 0).Select
Range("C9").Select
ActiveCell = ListBox1.Text
Sheets("matrix").Select
Worksheets("matrix").Range("L15").Select
Wert = ActiveCell
If Wert = 0 Then
Sheets("matrix").Visible = False
Else
End If
Sheets(Blattname).Select
ActiveWorkbook.Protect Structure:=True, Password:="xxxxxxxx"
Application.ScreenUpdating = True
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Einzelschrittmodus
13.08.2021 17:01:44
{Boris}
Hi,
geh den Code doch mal mit F8 im Einzelschrittmodus durch und schau, was passiert - oder eben nicht.
Auch wenn der Code nicht wirklich "optimal" ist - von der reinen Syntax her ist er ok.
Oder stimmen vielleicht die Passwörter nicht?
VG, Boris
AW: Einzelschrittmodus
13.08.2021 17:24:21
Stefan
Hi Boris. Danke. Ich bin schon x-mal den Code mit F8 durchgegangen. Bei den Befehlen visible/activate passiert nichts, weder am Bildschrim noch in der Datei.
Die Passwörter stimmen eigentlich und wenn ich auf die Blätter gehe ist kein Schutz darauf. Da ich ja eher Anfänger bin, habe ich keine Ahnung wo ich noch schauen könnte. Und wie geschrieben ist es nicht "mein" Code, ich muss halt etwas ergänzen.
Wie sähe denn ein optimalerer Code aus?
VG Stefan
Anzeige
AW: Einzelschrittmodus
13.08.2021 17:37:40
Werner
Hallo,
vielleicht solltest du erst mal den kompletten Code posten. Denn hier, bei den Punkten ist ja wohl weiterer Code vorhanden.

ActiveCell.Offset(1, 0).Select
Range("C9").Select
Die ganze Aktiviererei und Selectiererei sollte man eh weglassen und das entsprechende Objekt und die Range direkt adressieren. Dazu braucht man nicht erst etwas zu aktivieren.
So nach dem Muster:

Private Sub ListBox1_Change()
ThisWorkbook.Unprotect Password:="xxxxxxxx"
'wobei ich nicht weiß wozu
ActiveSheet.Unprotect Password:="cccccccc"
With Worksheets("matrix")
.Visible = True
.Unprotect Password:="xxxxxxxx"
.Range("C17").Formula = "=xxx!J2"
.Range("C9") = ListBox1.Text
If .Range("L15") = 0 Then
.Protect Password:="xxxxxxxx"
.Visible = False
End If
End With
ThisWorkbook.Protect Structure:=True, Password:="xxxxxxxx"
End Sub
Und noch ein paar Anmerkungen:
Den Schutz von der Mappe und vom Aktiven Blatt hebst du zweimal auf - warum?
Den Schutz vom Aktiven Blatt hebst du auf, obwohl du auf dem Aktiven Blatt überhaupt nichts machst?
Ich gehe mal davon aus, dass das alles auf der Arbeitsmappe passieren soll, in der sich auch dieser Code befindet. Dann besser mit ThisWorkbook ansprechen als mit ActiveWorkbook.
Oder sprechen wir hier von zwei verschiedenen Dateien.
Du siehst, da ist mehr unklar als klar.
Gruß Werner
Anzeige
AW: Einzelschrittmodus
16.08.2021 14:15:37
Stefan
Hallo Werner. Zunächst vielen Dank für deine Bemühungen.
Ich musste das Makro des Kollegen in meine Arbeitsmappe Berechnung integrieren. Der Aufruf der Arbeitsmappe Berechnung erfolgt von der Arbeitsmappe Erfassung. Die Mappe Berechnung wird dann mit Daten aus Mappe Erfassung gefüllt und unter einem neuen Namen gespeichert.. Die unprotect und protect waren schon in der Mappe des Kollegen enthalten. Mit Workbook protect war verhindert, dass die Mitarbeiter manuell Tabellenblätter ein/ausblenden. Das erfolgt größtenteils makrogesteuert, also prozessorientiert. Oftmals sind die Blätter selber auch noch geschützt. Das habe ich so vom Kollegen übernommen.
Das was ich bisher nicht verstehe verstanden habe, wenn ich die Mappe Berechnung manuell über den Explorer öffne, strandet er nicht bei Listbox Change. So bald ich jedoch die Mappe Berechnung von der Mappe Erfassung per Makro öffne, strandet er in der Function Listbox change an der Stelle mit dem Range select Befehl. Und das verstehe ich nicht. Wieso geht er in die Function obwohl ich nicht das Blatt Matrix überhaupt nicht anspreche.
Bei den Punkten werden "nur" weitere Sprünge gemacht um Formeln einzutragen. Siehe weiter unten...

ActiveCell.Offset(1, 0).Select
Range("C9").Select
Ich bin mir bewusst, dass es mit Codeschnipsel oft schwierig ist, dem Problem auf die Spur zu kommen. Allerdings kann ich halt die Mappen nicht hochladen, da ich ewig bräuchte um die ganzen Blätter, Module, Codes und erstellte Ribbon zu anonymisieren. Ich hatte gedacht, dass man vielleicht eine Idee hat bzw. wo ich schauen könnte, weshalb die Function Listbox Change angesprochen wird, obwohl ich nur die Mappe Berechnung per Makro öffne. Zum eigentlichen Daten übertragen von Mappe Erfassung zu Mappe Berechnung kommt er erst gar nicht.
Ich habe jetzt mal dein Mustercode eingebaut. Und siehe da, es funktioniert! Vielen, vielen Dank!!
Jedoch hätte ich noch eine Frage, da ich mit dem Befehl with worksheet nicht auskenne.
Wie müsste der Befehl für diese bisherige Anweisung sein, um weitere Formeln einzutragen?

ActiveCell.Offset(1, 0).Select
ActiveCell.Formula = "=Hilfe_Stufe!S2"
ActiveCell.Offset(3, 1).Select
ActiveCell.FormulaR1C1 = "=IF(R11C13-R[-2]C

Anzeige
AW: Einzelschrittmodus
13.08.2021 17:57:14
{Boris}
Hi Stefan,
also ich habe den Code - so wie er ist (nur die Schutzoptionen entfernt) - getestet - und er lief einwandfrei durch.
Lad mal Deine Mappe (anonymisiert) hoch.
VG, Boris
AW: Einzelschrittmodus
16.08.2021 12:05:38
Stefan
Hi Boris, vielen Dank für Deinen Test und Rückmeldung.
Auch wenn ich weiss, dass es zur Fehleranalyse immer besser ist die Datei/Mappe hochzuladen, kann ich es hier nicht so ohne Weiteres machen. Es sind so viele Module, Funktionen, Tabellenblätter und ein selbst erstelltes Ribbon mit sensiblen Daten enthalten, bis ich diese anonymisiert hätte, würde es "ewig" dauern.
Vielen Dank nochmals für die Hilfe und hoffe auf Verständnis, dass ich keine Mappe hochladen kann. Ich werde hier nochmal so schauen. Danke.
Anzeige

316 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige