Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1176to1180
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

VBA - Geht das ???

VBA - Geht das ?
Charly
Hallo
Ich habe ein Makro.
Nun möchte ich, dass der Code dieses Makros nur teilweise abgearbeitet wird.

Sub Makro1
usw.
End Sub

Sub Makro2()
Call Makro1 aber nur von
Zeile 30
bis
Zeile 100
End Sub

Ist das möglich?
Danke vorab
Gruss Charly

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA - Geht das ?
25.09.2010 12:15:22
JogyB
Hallo Charly,
im Prinzip ja, wenn auch nicht direkt auf diese Art. Du kannst bei Makro2 einen Übergabewert definieren und damit das Verhalten steuern.
Sub Makro2(ByVal myCode As Integer)
If myCode = 1 Then
MsgBox ("Variante 1")
ElseIf myCode = 2 Then
MsgBox ("Variante 2")
Else
MsgBox ("Andere Variante")
End If
End Sub
Sub Makro1()
' Hier einfach die Zahl variieren
Call Makro2(1)
End Sub

Gruß, Jogy
Hm ..
25.09.2010 12:45:55
Charly
Hi Jogy,
dass kopier ich irgendwie nicht.
Ich denke ich hab mich zu unklar ausgedrückt.
Ich hab ein Makro1 mit vielen Codezeilen.
Es werden unter anderem Berechnungen durchgefürt.
Im Moment habe ich den Code für die Berechnungen(ist der selbe Code wie im Makro1)
in ein Makro2 geschrieben um ihn per Shortcut aufzurufen.
Jetzt kam mir der Gedanke das, dass überflüssig ist und man im Macro2 nur
die entsprechenden Codzeilen von Makro1 aufrufen könnte?
Die Codezeilen für die Berechnungen sind nacheinander angeordnet.
Als Beispiel Zeile 30 bis Zeile 100.
Ich hab mich bemüht mein Prob etwas klarer zu beschreiben.
Ich hoffe es hat geklappt?
Gruss Charly
Anzeige
Hm ..
25.09.2010 12:46:13
Charly
Hi Jogy,
dass kopier ich irgendwie nicht.
Ich denke ich hab mich zu unklar ausgedrückt.
Ich hab ein Makro1 mit vielen Codezeilen.
Es werden unter anderem Berechnungen durchgefürt.
Im Moment habe ich den Code für die Berechnungen(ist der selbe Code wie im Makro1)
in ein Makro2 geschrieben um ihn per Shortcut aufzurufen.
Jetzt kam mir der Gedanke das, dass überflüssig ist und man im Macro2 nur
die entsprechenden Codzeilen von Makro1 aufrufen könnte?
Die Codezeilen für die Berechnungen sind nacheinander angeordnet.
Als Beispiel Zeile 30 bis Zeile 100.
Ich hab mich bemüht mein Prob etwas klarer zu beschreiben.
Ich hoffe es hat geklappt?
Gruss Charly
Anzeige
AW: Hm ..
25.09.2010 13:25:56
BoskoBiati
Hallo,
wenn es nur Berechnungen sind, dann mach daraus Funktionen und rufe die Funktionen auf. Du hast allerdings so wahnsinnig viel Code vorgestellt, dass es schwer fällt, daraus die richtigen Schlüsse zu ziehen.
Gruß
Bosko
AW: Hm ..
25.09.2010 13:43:32
Charly
Hallo Bosko,
ich wollte eigentlich nur wissen ob es möglich ist Codezeilen(Zeile 30 bis Zeile 100)
aus Makro1
in Makro2 abarbeiten zu lassen.
Und wenn ja, wie?
Danke Bosko
Gruss Charly
AW: Hm ..
25.09.2010 13:46:33
JogyB
Hallo Charly,
ist es, aber nicht so wie Du es Dir vorstellst, sondern so wie ich es Dir gezeigt habe.
Eine Programmiersprache interessiert sich nicht dafür, wie Du es gerne machen willst, die ist da recht stur ;).
Gruß, Jogy
Anzeige
@Joy
25.09.2010 13:54:09
Charly
Hi Jogy,
das Problem ist ich kapiers nicht so wie du es mir gezeigt hast.
Wo kann ich denn definieren welche Zeilen...
Kannst du bitte mal dein Beispiel erklären ... so für Dummys.
Danke
Gruss Charly
@Jogy sorry Schreibfehler oT.
25.09.2010 14:03:24
Charly
AW: @Joy
25.09.2010 15:01:18
JogyB
Hallo Charly,
Sub makro2(nur30bis100 As Boolean)
If Not nur30bis100 Then
'Zeilen 1 bis 29
End If
' Zeilen 31 bis 99
If Not nur30bis100 Then
' Zeilen 100 bis Ende
End If
End Sub

Mit Call makro2(False) wird alles abgearbeitet, mit Call makro2(True) nur die Zeilen 30 bis 100. Das Beispiel von Ramses macht letztendlich dasselbe, er setzt es nur etwas anders um.
Gruß, Jogy
Anzeige
AW: Hm ..
25.09.2010 13:50:10
Ramses
Hallo
Mit deinen Beispielen kann man effektiv ja nicht viel anfangen, daher hier ein Ansatz,... ob der funktionieren wird, kann ich dir nicht sagen, da dies abhängig vom Code in Makro 1 ist
Sub Makro1(row30 as boolean)
Deine Variablendeklarationen
if row30 = True then goto jump30
Sonstiger Code
usw.
jump30:
Code Zeile 30
Code Zeile100
if row30 = true then Exit sub
End Sub

Sub Makro2()
Call Makro1 True
End Sub
Gruss Rainer
Danke
25.09.2010 14:19:40
Charly
Hi Ramses,
du hast Recht.
"Mit deinen Beispielen kann man effektiv ja nicht viel anfangen"
Ich bastle eine Beispielmappe und stelle die Frage neu.
Das dauert aber.
Ich danke dir und wünsche ein schönes Wochenende.
Gruss Charly
Anzeige
AW: VBA - Geht das ?
25.09.2010 14:25:37
Daniel
Hi
du könntest die Zeilen 30-100 des Makros1 in ein weiteres Makro3 auslagern und dann damit arbeiten, das sieht dann in etwa so aus:
Sub Makro1()
Zeile 1-29
Call Makro3
Zeile 101-
End Sub
Sub Makro2()
Call Markro3
End Sub
Sub Makro3
'Zeile 30-100
End Sub

Die verwendeten Variablen müssen in diesem Fall Global gültig sein.
ne andere Variante wäre, über eine globale Variable zu kennzeichnen, von wo das Makro aufgerufen wird und damit den Makrolauf zu steuern:
Option Explicit
Public AufrufMakro2 As Boolean
Sub Makro1()
If Not AufrufMakro2 Then
'Zeile 1-29
End If
'Zeile 30-100
If Not AufrufMakro2 Then
'Zeile 101-Ende
End If
End Sub
Sub Makro2()
AufrufMakro2 = True
Call Makro1
AufrufMakro2 = False
End Sub
gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige