Supportnet / Forum / Tabellenkalkulation
Makro nur für diese Arbeitsmappe
Frage
Hallo Experten,
ich habe da schon wieder ein Problem.
Wie kann ich sicherstellen, das ein Makro nur für eine bestimmte Arbeitsmappe "diese Arbeitsmappe" verwendet werden kann.
Gruß
fedjo
Antwort 1 von schnallgonz
Hallo,
Also Mappe ansprechen, wenn Fehler = nicht da,
ab zur Sprungmarke, MsgBox und Ende.
gruß
schnallgonz
Sub test ()
On Error Goto nixMakro
Workbooks("diese Arbeitsmappe.xls").Activate
blablabla makroCode blablabla
Exit Sub
nixMakro:
MsgBox ("nikkesse Makro")
End Sub
Also Mappe ansprechen, wenn Fehler = nicht da,
ab zur Sprungmarke, MsgBox und Ende.
gruß
schnallgonz
Antwort 2 von fedjo
Hallo schnallgonz ,
danke für die Antwort!
Bei mir funktioniert das "Test Makro" nicht, vielleicht mache ich da einen Fehler?
Das Makro habe ich in diese Arbeitsmappe gespeichert, und durch "Mappe1" ersetzt.
Nach einem Start erscheint nur die "MsgBox".
Gruß
fedjo
Sub Test()
On Error GoTo nixMakro
Workbooks("
Range("A1").Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Exit Sub
nixMakro:
MsgBox ("nikkesse Makro")
End Sub
danke für die Antwort!
Bei mir funktioniert das "Test Makro" nicht, vielleicht mache ich da einen Fehler?
Das Makro habe ich in diese Arbeitsmappe gespeichert, und durch "Mappe1" ersetzt.
Nach einem Start erscheint nur die "MsgBox".
Gruß
fedjo
Sub Test()
On Error GoTo nixMakro
Workbooks("
Zitat:
Mappe1
").ActivateMappe1
Range("A1").Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Exit Sub
nixMakro:
MsgBox ("nikkesse Makro")
End Sub
Antwort 3 von schnallgonz
Moin,
versuche mal
Workbooks("Mappe1.xls").Activate
anstatt
Workbooks("Mappe1").Activate
gruß
schnallgonz
versuche mal
Workbooks("Mappe1.xls").Activate
anstatt
Workbooks("Mappe1").Activate
gruß
schnallgonz
Antwort 4 von fedjo
Hallo,
ich habe den Cote in
Gruß
fedjo
ich habe den Cote in
Zitat:
Workbooks("Mappe1.xls").Activate
verändert, das Makro funktioniert jetzt, allerdings für alle offenen Arbeitsmappen.Workbooks("Mappe1.xls").Activate
Gruß
fedjo
Antwort 5 von piano
Hallo
Warum fragst du nicht die aktive Arbeitsmappe ab?
Gruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
- probieren geht über studieren -
Warum fragst du nicht die aktive Arbeitsmappe ab?
Sub MakroNurFürdieseArbeitsmappe()
If ActiveWorkbook.Name <> "diese Arbeitsmappe" Then Exit Sub
MsgBox "Makro ausführen"
End Sub
Gruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
- probieren geht über studieren -
Antwort 6 von fedjo
Hallo piano,
Danke für die Antwort!
Ich habe das Makro:
Was mache ich falsch?
Was muß am Cote verändert werden?
Gruß
fedjo
Danke für die Antwort!
Ich habe das Makro:
Zitat:
Sub MakroNurFürdieseArbeitsmappe()
If ActiveWorkbook.Name <> "diese Arbeitsmappe" Then Exit Sub
MsgBox "Makro ausführen"
End Sub
als Test in "diese Arbeitsmappe" eingefügt, es funktioniert leider nicht die MsgBox erscheint nicht.Sub MakroNurFürdieseArbeitsmappe()
If ActiveWorkbook.Name <> "diese Arbeitsmappe" Then Exit Sub
MsgBox "Makro ausführen"
End Sub
Was mache ich falsch?
Was muß am Cote verändert werden?
Gruß
fedjo
Antwort 7 von fürLau
Hallo
Klar, daß das nicht geht. "Diese Arbeitsmappe" ist ein Platzhalter, den Mappennamen entnimmst Du der Excel-Titelleiste, oder läßt es Dir im Direkt-Fenster mit
? ActiveWorkbook.Name anzeigen.
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Klar, daß das nicht geht. "Diese Arbeitsmappe" ist ein Platzhalter, den Mappennamen entnimmst Du der Excel-Titelleiste, oder läßt es Dir im Direkt-Fenster mit
? ActiveWorkbook.Name anzeigen.
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Antwort 8 von fedjo
Hallo fürLau,
habe den Platzhalter "Diese Arbeitsmappe" durch den Mappennamen
Die MsgBox erschein aber unter Mapp1 und Mappe2.
Gruß
fedjo
habe den Platzhalter "Diese Arbeitsmappe" durch den Mappennamen
Zitat:
If ActiveWorkbook.Name <> "Mappe1.xls" Then Exit Sub
ersetzt.If ActiveWorkbook.Name <> "Mappe1.xls" Then Exit Sub
Die MsgBox erschein aber unter Mapp1 und Mappe2.
Gruß
fedjo
Antwort 9 von fürLau
Hallo @fedjo
Wohin hast Du denn das Makro geschrieben?
und Wie rufst Du es aus einer anderen Mappe auf?
Versuch´s vielleicht ´mal so:
Gruß
Wohin hast Du denn das Makro geschrieben?
und Wie rufst Du es aus einer anderen Mappe auf?
Versuch´s vielleicht ´mal so:
Sub Test()
If ActiveWorkbook.Name <> "Mappe1" Then GoTo nixMakro
Range("A1").Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Exit Sub
nixMakro:
MsgBox ("nikkesse Makro")
End Sub
Gruß
Antwort 10 von fedjo
Hallo
1 Das Makro ist in "dies Arbeitsmappe" gespeichert.
2 Es wird über eine Tastenkompinaton (Strg+X)gestartet.
Die MsgBox erschein aber unter Mapp1 und Mappe2.
Gurß
fedjo
1 Das Makro ist in "dies Arbeitsmappe" gespeichert.
2 Es wird über eine Tastenkompinaton (Strg+X)gestartet.
Die MsgBox erschein aber unter Mapp1 und Mappe2.
Gurß
fedjo
Antwort 11 von fürLau
Hallo nochmals
Da Du nun schon das zweite Mal Mapp1 geschrieben hast, ist davon auszugehen, Daß Du tatsächliche mit Mapp1 anstatt mit Mappe1 arbeitest. Wenn dem so ist, ist natürlich in den entsprechenden Makros auch jeweils das Wort Mappe1 durch Mapp1 zu ersetzen.
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Da Du nun schon das zweite Mal Mapp1 geschrieben hast, ist davon auszugehen, Daß Du tatsächliche mit Mapp1 anstatt mit Mappe1 arbeitest. Wenn dem so ist, ist natürlich in den entsprechenden Makros auch jeweils das Wort Mappe1 durch Mapp1 zu ersetzen.
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Antwort 12 von fedjo
Hallo,
war ein Schreibfehler.
Endschuldigung!
Ich arbeit selbstverständlich mit Mappe1.
MfG
fedjo
war ein Schreibfehler.
Endschuldigung!
Ich arbeit selbstverständlich mit Mappe1.
MfG
fedjo
Antwort 13 von piano
Hallo
Also, wenn ich "Mappe1" und Mappe2" geöffnet habe und mit Strg x wahlweise von "Mappe1" oder Mappe2" den Makro starte, funktioniert alles einwandfrei. Es kommt natürlich darauf an, welche Mappe den Fokus hat!
Nochmals der Makro (in "Mappe1"):
Gruß piano
Also, wenn ich "Mappe1" und Mappe2" geöffnet habe und mit Strg x wahlweise von "Mappe1" oder Mappe2" den Makro starte, funktioniert alles einwandfrei. Es kommt natürlich darauf an, welche Mappe den Fokus hat!
Nochmals der Makro (in "Mappe1"):
Sub MakroNurFürdieseArbeitsmappe()
If ActiveWorkbook.Name <> "Mappe1" Then
MsgBox "nixMakro"
Else
MsgBox "Makro ausführen"
End If
End Sub
Gruß piano
Antwort 14 von fedjo
Hallo piano,
das Makro sollte aber ausschließlich nur in einer Arbeitmappe "Mappe1" funktionieren.
Könntest Du für Fokus eine Erklärung anfügen.
Gruß
fedjo
das Makro sollte aber ausschließlich nur in einer Arbeitmappe "Mappe1" funktionieren.
Zitat:
welche Mappe den Fokus hat
welche Mappe den Fokus hat
Könntest Du für Fokus eine Erklärung anfügen.
Gruß
fedjo
Antwort 15 von fürLau
Hallo, fedjo
siehe auch...
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
siehe auch...
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Antwort 16 von piano
Hallo
Fokus: Die Arbeismappe ist aktiv und angewählt.
Und damit er nur in "Mappe1" funktioniert, schreibst du den Code an Stelle von ´MsgBox "Makro ausführen" ´.
Den Code ´Else
MsgBox "Makro ausführen" ´ kannst du weglassen, war nur zur Erklärung, daß nichts passiert, wenn von einer anderen Mappe der Makro gestartet wird.
Gruß piano
Fokus: Die Arbeismappe ist aktiv und angewählt.
Und damit er nur in "Mappe1" funktioniert, schreibst du den Code an Stelle von ´MsgBox "Makro ausführen" ´.
Den Code ´Else
MsgBox "Makro ausführen" ´ kannst du weglassen, war nur zur Erklärung, daß nichts passiert, wenn von einer anderen Mappe der Makro gestartet wird.
Gruß piano
Antwort 17 von fedjo
Hallo piano,
der Cote sieht jetzt so aus:
Sub MakroNurFürdieseArbeitsmappe()
If ActiveWorkbook.Name <> "Mappe1" Then
Range("A1").Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
End Sub
Wenn das Makro von Mappe2 aus gestartet wird und danach Mappe1 aktiv ist, dann kommt es sofort zum Einfügen der Kopie aus Mappe2.
Gibt es da auch eine Lösung?
Gruß
fedjo
der Cote sieht jetzt so aus:
Sub MakroNurFürdieseArbeitsmappe()
If ActiveWorkbook.Name <> "Mappe1" Then
Range("A1").Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
End Sub
Wenn das Makro von Mappe2 aus gestartet wird und danach Mappe1 aktiv ist, dann kommt es sofort zum Einfügen der Kopie aus Mappe2.
Gibt es da auch eine Lösung?
Gruß
fedjo
Antwort 18 von fürLau
Hallo
Nun muß es wohl so heißen:
Sub MakroNurFürdieseArbeitsmappe()
If ActiveWorkbook.Name [h1]=[/h1] "Mappe1" Then
Range("A1").Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
End Sub
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Nun muß es wohl so heißen:
Sub MakroNurFürdieseArbeitsmappe()
If ActiveWorkbook.Name [h1]=[/h1] "Mappe1" Then
Range("A1").Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
End Sub
Gruß[h3]{[h1]Ó¤[sup...fürLau
Signatur wurde ganz und gar ohne SNTool erstellt.
Antwort 19 von fedjo
Hallo,
Durch den Zusatz :
Der kleine Cote:
ist auch nur zu Testzwecken gedacht.
Es sollt eigentlich ein Lösung sein das ein Makro abbricht.
M.f.G
fedjo
Durch den Zusatz :
Zitat:
Application.CutCopyMode = False
wird auch in Mappe1 nichts kopiert und eingefügt.Application.CutCopyMode = False
Der kleine Cote:
Zitat:
Range("A1").Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
Range("A1").Select
Selection.Copy
Range("C1").Select
ActiveSheet.Paste
ist auch nur zu Testzwecken gedacht.
Es sollt eigentlich ein Lösung sein das ein Makro abbricht.
M.f.G
fedjo
Antwort 20 von dalia
Antwort 21 von fedjo
Hallo Fabian,
könntest du deinen Cote:
für mich verständlich überzetzen.
Gruß
fedjo
könntest du deinen Cote:
Zitat:
Option SubAportBase
On Error Resume Next
General Procedure(fedjo1).start
Option SubAportBase
On Error Resume Next
General Procedure(fedjo1).start
für mich verständlich überzetzen.
Gruß
fedjo
Antwort 22 von fedjo
Hallo,
ich möchte mich bei allen für die Hilfe beanken.
Eine Lösung für mein Problem habe ich gefunden:
Private Sub Workbook_Deactivate()
Application.OnKey "{Enter}" ´Tastenkompination
End Sub
Private Sub Workbook_Activate()
Application.OnKey "{Enter}", "Makro"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "{Enter}" ´Tastenkompination
End Sub
Private Sub Workbook_Open()
Application.OnKey "{Enter}", "Makro"
End Sub
MfG
fedjo
ich möchte mich bei allen für die Hilfe beanken.
Eine Lösung für mein Problem habe ich gefunden:
Private Sub Workbook_Deactivate()
Application.OnKey "{Enter}" ´Tastenkompination
End Sub
Private Sub Workbook_Activate()
Application.OnKey "{Enter}", "Makro"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "{Enter}" ´Tastenkompination
End Sub
Private Sub Workbook_Open()
Application.OnKey "{Enter}", "Makro"
End Sub
MfG
fedjo