Makro starten in einem anderen Tabellenblatt
#1
Hallo Excelexperten,


habe mich in den letzten Tagen ein bischen mit den Makros beschäftigt und bin dabei auf ein Problem gestoßen.

In meiner Datei habe ich 3 Tabellenblätter (vereinfachtes Beispiel):
- Tab1
- Tab2
- Tab3
In Tab2 möchte ich Werte aus der Spalte A nach Spalte D kopieren. Dies habe ich mit einem Makro (Makro_Tab_2) gemacht.
In Tab3 möchte ich Werte aus der Spalte B nach Spalte E kopieren. Dies habe ich mit einem Makro (Makro_Tab_3) gemacht.

Um die Sache zu vereinfachen möchte ich in Tab1 ein Makro über eine Schaltfläche starten, dass beide Makros hintereinander ausführt.

Bei mir funktioniert das nicht! Was mache ich falsch? Kann mir jemand helfen?

Vielen Dank im Voraus

Bernd
Top
#2
Hi,

Ohne den code zu kennen ist das zäh richtig zu beantworten.
Ich gehe mal davon aus, dass du deinen Code jeweils im Tabellenblatt gespeichert hast und nicht in einem Modul.
Start in einem Modul erst das eine und dann das andere als Test.
Wenn das klappt, kannste da nach dann weiter experimentieren.

In Anderen Modulen (Tabellen) musst du eventuell den Modulnamen vor die Sub mit aufnehmen, dann könnte es auch klappen.
Spiel mal damit rum.
Top
#3
Hallo,

Zitat:Um die Sache zu vereinfachen möchte ich in Tab1 ein Makro über eine Schaltfläche starten, dass beide Makros hintereinander ausführt.
Bei mir funktioniert das nicht! Was mache ich falsch? Kann mir jemand helfen?

Was Du falsch machst? Nun, mit Sicherheit, daß Du uns den/die Codes und die Dateien nicht zeigen willst.

Derzeit ist sogar noch unbekannt, wie Deine Makros überhaupt heißen. Da kann ich nur behaupten, daß das
denkbar schlechte Voraussetzungen sind, Hilfe zu geben, aber auch ebenso schlechte Aussichten, vernünftige
Hilfe zu empfangen.

Ich habe vor etwa zehn Jahren mal sowas programmiert und gerade eben noch mal nachgesehen, wie ich
das damals gehandhabt habe. Und was soll ich sagen meine Codes befinden sich in normalen Modulen und
das Zusammenspiel funktioniert.

Zu Deinem Problem kann ich also nur sagen ... jepp, das kann man machen PUNKT.
Top
#4
Guten Morgen!

Der Code ist kein Geheimnis, aber ich hatte gedacht, dass die Aufgabenstellung eigentlich sehr einfach ist. Die Datei habe ich beigefügt.


Angehängte Dateien
.xlsm   Testdatei Bernd.xlsm (Größe: 22,07 KB / Downloads: 10)
Top
#5
Sezte in den Code hinter dem Button vor Makro_Start einfach das Wort 
Call 
und ein Leerzeichen. dann läufts
Top
#6
Hi,

da braucht es kein Call, sondern eine eindeutige Referenz!


Code:
Sub Makro_Tab_2()
'
' Makro_Tab_2 Makro
'

With Sheets("Tab2")
    .Range("A1:A10").Copy
    .Range("D1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
End With
End Sub
Sub Makro_Tab_3()
'
' Makro_Tab_3 Makro
'

    With Sheets("Tab3")
        .Range("B1:B10").Copy
        .Range("E1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
    End With
End Sub
Sub Makros_Start()
'
' Makros_Start Makro
'

'
    Makro_Tab_2
    Makro_Tab_3
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#7
Hallo Bos…

Zitat:da braucht es kein Call, sondern eine eindeutige Referenz!

Du hast wie immer sicherlich recht, dass is eindeutig die bessere Lösung.
Aber
Ein einfaches Call vor dem Code des TE brachte bei mir den Code zum laufen.

Zitat:Bei mir funktioniert das nicht! Was mache ich falsch? Kann mir jemand helfen?
Top
#8
Hi Wastl,

ein Makro in einem Modul, welches sich nicht auf ein Tabellenbaltt bezieht, macht was es will.
Dieser Code läuft auch problemlos durch:


Code:
Sub Makro_Tab_2()

   Range("A1:A10").Select
   Selection.Copy
   Range("D1").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Application.CutCopyMode = False
End Sub
Sub Makro_Tab_3()

   Range("B1:B10").Select
   Selection.Copy
   Range("E1").Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Application.CutCopyMode = False
End Sub
Sub Makros_Start()

   Makro_Tab_2
   Makro_Tab_3
End Sub
Allerdings macht er nichts, da kein Tabellenblatt angesprochen wird, kann man leicht testen.
Der Originalcode läuft auch, aber er spricht eine Mappe1 an, was schon mal schlecht ist, wenn die Datei, in der das Makro steht, nicht Mappe1 heißt!
Speichere die Datei mal unter Mappe1 und drücke den Button!
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#9
Hallo Boskobati,

für mich steht das gar nicht zur Debatte!
Das die einzelnen Makros nicht richtig funktionieren is die andere Sache, vielleicht sind es nur Beispiele ohne Sinn und Verstand.

Ich habe herausgelesen, dass der TE nicht hinbekommt, wie mir der Schaltfläche in Tab1 seine Makros zum laufen bekommt.
Und da hat eindeutig das Call gefehlt.

Ich habe es eingefügt, mit F9 einen Haltepunkt gesetzt, mit F8 auf schrittweise weiter gedrückt und beobachtet, dass das Makro nun ins Modul 1 wechselt und dort was tun will. Da war der Fall für mich erledigt und habe es abgebrochen und meine Antwort geschrieben, weil ich davon ausgehe, dass der TE genau nur dieses wissen wollte.

Aber so ist das mit der deutschen Sprache, es sind meist mehrere Interpretationen möglich. Nun warten wir einfach auf die Reaktion des TE
Top
#10
Hi Wastl,

Zitat:Ich habe herausgelesen, dass der TE nicht hinbekommt, wie mir der Schaltfläche in Tab1 seine Makros zum laufen bekommt.
Und da hat eindeutig das Call gefehlt.

wenn Du aus einem Makro ein anderes starten willst, funktioniert das ohne oder mit CALL gleich gut.
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste