Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Code aus "DieseArbeitsmappe" nicht ausführen

Forumthread: Code aus "DieseArbeitsmappe" nicht ausführen

Code aus "DieseArbeitsmappe" nicht ausführen
09.12.2025 18:44:49
Heike
Hallo
In Mappe1, im Objekt „DieseArbeitsmappe“, befindet sich ein Code, der überprüft, ob Mappe2 geöffnet ist, wenn nicht, wird sie geöffnet, damit Daten automatisch in Mappe2 übertragen werden. Das passt super.

Ist die Übertragung abgeschlossen, benötige ich Mappe2 nicht mehr zur Bearbeitung, ich schließe sie, damit ein anderer damit weiter arbeiten kann.

Jetzt kommt mein Problem:
In Mappe1 habe ich in einem Modul ein „LöschButton“ erstellt, welcher mir aus dieser Mappe (Mappe1) die Daten löscht. Das funktioniert zwar, aber Excel will jetzt natürlich immer die Mappe2 öffnen.

Kann mir bitte jemand sagen, wie ich das in diesem Lösch-Button unterbinden kann? Das der Code aus „Diese Arbeitsmappe“ nicht ausgeführt wird?
Hier ein Auszug aus dem Lösch-Button:
Sub prcLoeschenDatenWochentag(strWochentag As String)
'Löscht im aktiven Tabellenblatt die Eingabedaten des Wochentags
'Variablen für Eingabe-Tabellenblatt
Dim wks_E As Worksheet 'Eingabe-Tabellenblatt
Dim Zeile_E1 As Long '1. Zeile des Wochentags
Dim Zeile_EL As Long 'Letzte Eingabezeile des Wochentags
Dim Zeile_E As Long 'laufender Zeilen-Zähler
Dim rngZeile_E1 As Range 'Variable zur Suche der 1. Zeile des Monats
On Error GoTo Beenden
Set wks_E = ActiveSheet
If MsgBox("Eingabedaten für """ & strWochentag & """ auf Blatt """ & wks_E.Name & """ löschen?", _
vbOKCancel + vbQuestion, _
"Test - Löschen - E I N G A B E N L Ö S C H E N") = vbCancel Then GoTo Beenden

Ich hoffe, ich habe mich verständlich ausgedrückt. Freue mich natürlich über jede Unterstützung und sage schon einmal DANKE.
VG Heike
Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code aus "DieseArbeitsmappe" nicht ausführen
09.12.2025 20:03:47
Onur
Ohne die Datei wird das nix. Oder sollen wir dir auch einen Auszug der Lösung posten ?
Ausserdem - Du brauchst doch einen Code zum Öffnen und Übertragen und einen Code zu Löschen.
Wieso hast du dann Alles in einen Code gepackt ?
AW: Code aus "DieseArbeitsmappe" nicht ausführen
09.12.2025 20:22:27
Heike
Hallo Onur,
"--- Ausserdem - Du brauchst doch einen Code zum Öffnen und Übertragen ---" ja richtig, genau dieser ist in "DieseArbeitsmappe" und
der Code zum Löschen steht in einem Modul.

Aus meiner Datei eine Testdatei zu machen, ist leider nicht ohne weiteres möglich. Ich versuche mal, sie abzuspecken aber ob dann die Codes noch funktionieren, weiß ich nicht. Leider doch alles sehr kompliziert, Sorry dafür. Danke Onur.
VG Heike
Anzeige
AW: Code aus "DieseArbeitsmappe" nicht ausführen
09.12.2025 20:11:32
Daniel
"Das funktioniert zwar, aber Excel will jetzt natürlich immer die Mappe2 öffnen."

Also natürlich ist dieses Verhalten nicht.
Du müsstest mal beide Dateien hochladen, damit man sieht,wasdu genau programmiert hast

Gruß Daniel
AW: Code aus "DieseArbeitsmappe" nicht ausführen
11.12.2025 01:18:29
Piet
Hallo Heike

ich war bis jetzt nicht am Thread beteiligt, habe aber auch noch eine Lösung.
Direkt hinter Sub einen End Befehl einsetzen. -- Oder Exit Sub statt End.
Bei Exit Sub wird das Makro verlassen, bei End wird alles sofort gestoppt.
Sub prcLoeschenDatenWochentag(strWochentag As String)
If ActiveWorkbook.Name = ThisWorkbook.Name Then End

mfg Piet
Anzeige
AW: Code aus "DieseArbeitsmappe" nicht ausführen
11.12.2025 21:04:48
Heike
Hallo Piet, auch dir vielen Dank. Werde es später mal ausprobieren.
VG Heike
AW: Code aus "DieseArbeitsmappe" nicht ausführen
09.12.2025 20:42:09
Heike
Hallo Daniel,
ich weiß, ohne Beispieldatei ist das echt schwierig. Meine beiden Dateien wurden von einem ehem.Kollegen mit unglaublich vielen Modulen etc. erstellt/programmiert. Ich kann lediglich hier und da eine Abfrage einfügen oder einen bestehenden Code etwas ändern.

Ich versuche mal, eine kleinere neue zu erstellen, die ich dann hier rein stelle. Sind denn .xlsm-Dateien möglich?

VG Heike
Anzeige
AW: Code aus "DieseArbeitsmappe" nicht ausführen
09.12.2025 20:58:34
Daniel
Ja xslm geht.

Aber jetzt mal ehrlich, du schreibst, es ist unglaublich kompliziert und enthält viele Makros ...

Wie kommst du dann an auf die Idee, es könnte an genau dem Codeschnipsel liegen, den du uns zeigst?
AW: Code aus "DieseArbeitsmappe" nicht ausführen
09.12.2025 21:26:45
Heike
Hey Daniel, ja, du hast ja Recht. Ich arbeite gerade an den Testdateien.
Anzeige
Testdateien sind jetzt vorhanden
09.12.2025 22:39:11
Heike
So ihr fleißigen Helfer,
folgend die beiden Testdateien, hoffe, ihr bekommt keinen Schock ;-)

Noch einmal zusammenfassend.

Für die 1. Bearbeitung benötige ich beide Mappen. In Mappe1 gebe ich eine Zahl ein, automatisch wird diese in Mappe2 u.a. eingefärbt. Code steht in DieseArbeitsmappe.

Für die 2. Bearbeitung benötige ich Mappe2 nicht mehr, ich arbeite nur noch mit Mappe1. Also schließe ich Mappe2. Und das ist das Problem. Egal was ich in Mappe1 mache (drucken, sortieren, löschen) er will immer Mappe2 öffnen.

https://www.herber.de/bbs/user/179806.xlsm Mappe1

https://www.herber.de/bbs/user/179807.xlsm Mappe2

Vielen lieben Dank für eure Geduld
Anzeige
AW: Testdateien sind jetzt vorhanden
10.12.2025 04:09:37
Onur
Kein Wunder, bei jedem Blattwechsel wird nach der Datei2 gesucht.
Was glaubst du denn wohl, WAS der Code von
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

macht ?
AW: Testdateien sind jetzt vorhanden
10.12.2025 12:29:55
Onur
Was erwartest du denn jetzt? Die Datei ist eine Magerversion der Originaldatei, man kann dich nichts fragen, weil die Makros nicht von dir sind und Erläuterungen bringen auch nichts, weil deine Kenntnisse nicht ausreichen, um sie umzusetzen.
Wie soll man dir denn genau helfen ?
Ich habe dir gezeigt, wo der Fehler liegt (dein Makro muss manuell gestartet werden statt, wie jetzt, automatisch bei jedem Blattwechsel).
Du brauchst doch die Sub in ein Modul kopieren, ihren Namen ändern und einem Button zuweisen, damit sie nur noch manuell gestartet wird.
Anzeige
AW: Testdateien sind jetzt vorhanden
10.12.2025 08:42:36
schauan
... woran ist denn der Unterschied zwischen den beiden Bearbeitungen festzumachen? Trägst Du dann nichts mehr in Spalte 1 (A) ein bzw. soll die Datei immer und nur bei Bearbeitung der Spalte 1 (A) geöffnet werden, wenn sie noch nicht offen ist?

Wenn ja,
irgendwo hast Du
'wenn in Spalte A in  Mappe1 eine Zahl eingegeben wird, dann

If IsNumeric(Target.Value) And Target.Column = 1 And Target.Cells.Count = 1 Then

dann solltest Du das Öffnen erst danach programmieren...

Wenn nein,
musst Du was anderes festlegen.


Anzeige
AW: Testdateien sind jetzt vorhanden
10.12.2025 09:26:59
Ulf
Hi,
zum Verständnis: habe einen Wahrheitswert eingefügt und global definiert, der bei Ausführung in SheetChange abgefragt wird. Die Löschroutine setzt ihn auf wahr für den Ablauf und zurück wenn fertig. That's it
https://www.herber.de/bbs/user/179809.xlsm
hth
Ulf
Anzeige
AW: Testdateien sind jetzt vorhanden
10.12.2025 11:56:01
Heike
Hallo ihr Drei, zuerst mal wieder vielen Dank für euren Einsatz.

@Onur: Leider bin ich nicht so versiert in Programmierung wie ihr. Deswegen übernehme ich das, was bereits vorhanden ist oder ich bekomme. Und hier im Forum wurde mir schon oft geholfen.

@Ulf: Die Lösung ist super, nur habe ich noch ca. 15 weiter Buttons, z.B. Sortieren, Ausblenden usw. Ich denke, das wird dann zu kompliziert. Dennoch speicher ich mir deine Lösung.

@schauan: Ja richtig. Nur wenn in Spalte A etwas eingetragen wird, benötige ich die andere Datei (du hast es auf den Punkt gebracht ;-)
Alles andere an Zellen ist mit Formeln und geschützt.

VG Heike

Anzeige
AW: Testdateien sind jetzt vorhanden
10.12.2025 12:16:09
Ulf
Hi,
das kannst du mit Sicherheit auch selbst regeln:
so sieht eine Routine ohne aus

Sub irgendwas()
ANWEISUNGEN
End Sub

wenn du verhindern willst

Sub irgendwas()
bNotAllowed=True
ANWEISUNGEN
bNotAllowed=False
End Sub

wenn du mehrere Subs nacheinander ausführen wilst geht auch

Sub neu()
bNotAllowed=True
Call SUBX
Call SUBY
bNotAllowed=False
End Sub

das Öffnen der Mappe wir in beiden Fällen verhindert.
hth
Ulf
Anzeige
AW: Testdateien sind jetzt vorhanden
10.12.2025 12:21:22
Heike
Hallo Ulf, das ist schon einmal ein guter Ansatz. Werde es aufjedenfall später testen. Dankeschön.
VG Heike
AW: Testdateien sind jetzt vorhanden
10.12.2025 15:38:36
schauan
... einfach nur die Reihenfolge ändern reicht Dir nicht? Du kannst die genannten Zeilen einfach ganz nach oben in dem Makro schieben, ...
Hier nochmal:
'wenn in Spalte A in  Mappe1 eine Zahl eingegeben wird, dann

If IsNumeric(Target.Value) And Target.Column = 1 And Target.Cells.Count = 1 Then


Anzeige
AW: ... die Frage ...
10.12.2025 15:41:47
schauan
... nach den Bedingungen hattest Du ja nur so beantwortet, dass es um die Eingaben in Spalte A geht. Wenn es also keine weiteren Einschränkungen gibt, z.B. nur bestimmte Blätter, wo das wirken soll, oder auch nicht ...
AW: ... die Frage ...
10.12.2025 16:53:28
Heike
Hey schauan, ja, es sind gesamt 15 Tabellenblätter, alle gleich aufgebaut und nur in Spalte A wird ein Eintrag gemacht, der dann auf die Mappe2 zugreift.

Vielen lieben Dank für eure Geduld.

VG Heike
Anzeige
Dank eurer Hilfe, Problem gelöst ;-)
10.12.2025 19:35:57
Heike
Vielen lieben Dank an euch. Habe, wie @schauan vorgeschlagen hatte, einfach die Reihenfolge geändert und bis jetzt scheint es zu funktionieren.

Allen noch einen schönen Abend.
VG Heike

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige