Live-Forum - Die aktuellen Beiträge
Datum
Titel
07.05.2024 16:36:49
07.05.2024 14:51:38
07.05.2024 13:27:17
Anzeige
Archiv - Navigation
1156to1160
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
Inhaltsverzeichnis

Codezeile eines anderen Makro unterdrücken

Codezeile eines anderen Makro unterdrücken
Holger
Hallo Excelfreunde,
kann man per Makro temporär eine oder mehrere Codezeilen eines anderen Makro unterdrücken?
Zum besseren Verständnis habe ich ein1 (sinnfreies) Beispiel erstellt:
Sub Testsub1()
Sheets("Tabelle1").Range("a5").Copy Sheets("Tabelle2").Range("a5")
Sheets("Tabelle2").Select
Range("a1").Select
End Sub
Sub Testsub2()
Sheets("Tabelle1").Range("b5").Copy Sheets("Tabelle2").Range("b5")
Sheets("Tabelle2").Select
Range("b1").Select
End Sub
Sub AlleSub()
With Application
.Run ("Testsub1")
.Run ("Testsub2")
End With
End Sub

Die ersten beiden Makros können eigenständig ausgeführt werden. Dabei ist die "select"-Anweisung notwendig!
Wenn aber das 3. Makro ausgeführt wird, sollen die "select"-Anweisungen nicht ausgeführt werden.
Ist so etwas möglich?
Gruß
Holger

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Codezeile eines anderen Makro unterdrücken
20.05.2010 08:38:23
fcs
Hallo Holger,
deklariere ein öffentliche (Public) Variable vom Type Boolean.
in der 3. Prozedur setzt du vor dem Aufruf der anderen Prozeduren diese Variable auf True, danach wieder auf Falsch.
In den aufgerufenen Prozeduren fügst du entsprechende If-Prüfungen auf den Wert der Variablen ein, so dass entsprechende Zeilen ggf. bei der Ausführung übersprungen werden.
Gruß
Franz
AW: Codezeile eines anderen Makro unterdrücken
20.05.2010 08:39:30
welga
Hallo,
mal nur so ein gedankengang. Deklarier doch eine Boolean-Variable, mit welcher du deine Select-Anweisungen an- bzw. ausschalten kannst.
Hier mal ungetestet :
public a as boolean
Sub Testsub1()
Sheets("Tabelle1").Range("a5").Copy Sheets("Tabelle2").Range("a5")
if a then
Sheets("Tabelle2").Select
Range("a1").Select
end if
End Sub

Sub Testsub2()
Sheets("Tabelle1").Range("b5").Copy Sheets("Tabelle2").Range("b5")
if a then
Sheets("Tabelle2").Select
Range("b1").Select
end if
End Sub

Sub AlleSub()
a=false
With Application
.Run ("Testsub1")
.Run ("Testsub2")
End With
a=true
End Sub
Gruß
welga
Anzeige
aber nicht getestet ...
20.05.2010 08:52:05
Matthias
Hallo
Ich bin nicht ganz sicher, ob ich Dich richtig verstanden habe.
setze im 3. Makro eine boolsche Variable auf True, die Du vorher als Public in einem Modul deklarierst
umgesetzt sehe das so aus
Modul1
Option Explicit
Public bol As Boolean
Sub Testsub1()
Sheets("Tabelle1").Range("a5").Copy Sheets("Tabelle2").Range("a5")
If bol = False Then Sheets("Tabelle2").Select
If bol = False Then Range("a1").Select
End Sub


Sub Testsub2()
Sheets("Tabelle1").Range("b5").Copy Sheets("Tabelle2").Range("b5")
If bol = False Then Sheets("Tabelle2").Select
If bol = False Then Range("b1").Select
End Sub


Sub AlleSub()
bol = True
With Application
.Run ("Testsub1")
.Run ("Testsub2")
End With
 bol = False
End Sub
Gruß Matthias
Anzeige
AW: aber nicht getestet ...
20.05.2010 09:12:18
welga
wenn du bol als true und false so definierst, dann muss das dritte makro stets zuerst ausgeführt werden, damit die beiden ersten auch einzeln aufgerufen funktionieren. Ich würde komplett true und false tauschen, dann laufen alle drei Makros unabhängig voneinander.
Gruß
welga
hast Du das getestet ?
20.05.2010 09:24:58
Matthias
Hallo
wenn ich Public bol As Boolean setze ist der boolsche Anfangswert False
Starte ich nun die Makros einzeln werden die Select-Anweisungen auch ausgeführt
Starte ich AlleSub() wird bol zu True und im Code wird die Select-Anweisung nicht ausgeführt
hier zur Demo mit einer MSGBOX
Option Explicit
Public bol As Boolean
Sub Testsub1()
MsgBox bol
'Sheets("Tabelle1").Range("a5").Copy Sheets("Tabelle2").Range("a5")
If bol = False Then MsgBox "Selection ausführen"
If bol = False Then MsgBox "Selection ausführen"
End Sub

Sub Testsub2()
MsgBox bol
'Sheets("Tabelle1").Range("b5").Copy Sheets("Tabelle2").Range("b5")
If bol = False Then MsgBox "Selection ausführen"
If bol = False Then MsgBox "Selection ausführen"
End Sub

Sub AlleSub()
bol = True
With Application
.Run ("Testsub1")
.Run ("Testsub2")
End With
bol = False
End Sub
Gruß Matthias
Anzeige
AW: hast Du das getestet ?
20.05.2010 09:45:36
welga
Hallo,
sorry ich hatte es so verstanden, dass die selects, beim Einzelstrat ausgeführt werden sollen und beim AlleSubs nicht.
Da habe ich das dann wohl falsch verstanden.
Naja,
funktioniert ja jetzt.
Gruß
welga
Fazit
20.05.2010 09:54:22
Matthias
Hallo
Zitat
sorry ich hatte es so verstanden, dass die selects, beim Einzelstrat ausgeführt werden sollen und beim AlleSubs nicht.

Vorhaben von Holger :
Die ersten beiden Makros können eigenständig ausgeführt werden. Dabei ist die "select"-Anweisung notwendig!
Du hast das schon richtig verstanden nur falsch umgesetzt ;o)
Aber das macht nix, Die Aufgabe wurde von uns im Forum gelöst und das ist entscheidend!
Im Übrigen kannst Du mir hier evtl. behilflich sein? Ich habe leider noch gar kein Feedback
https://www.herber.de/forum/messages/1157813.html
Gruß Matthias
Anzeige
Jetzt aber getestet ...
20.05.2010 09:28:16
Holger
...und für gut befunden!
Dank an alle Drei für eure Lösungen! Genau so eine Lösung habe ich gesucht. Sonst wurde immer nur vorgeschlagen, einfach auf "select" zu verzichten.
Die Lösung von Matthias funktioniert einwandfrei. Deswegen verstehe ich den Einwand von welga nicht so ganz.
Gruß
Holger

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige