Supportnet Computer
Planet of Tech

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,


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("
Zitat:
Mappe1
").Activate

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

Antwort 4 von fedjo

Hallo,
ich habe den Cote in
Zitat:
Workbooks("Mappe1.xls").Activate
verändert, das Makro funktioniert jetzt, allerdings für alle offenen Arbeitsmappen.

Gruß
fedjo

Antwort 5 von piano

Hallo
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:
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.

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.

Antwort 8 von fedjo

Hallo fürLau,
habe den Platzhalter "Diese Arbeitsmappe" durch den Mappennamen
Zitat:
If ActiveWorkbook.Name <> "Mappe1.xls" Then Exit Sub
ersetzt.

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:

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

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.

Antwort 12 von fedjo

Hallo,
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"):
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.
Zitat:
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.

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

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

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.

Antwort 19 von fedjo

Hallo,
Durch den Zusatz :
Zitat:
Application.CutCopyMode = False
wird auch in Mappe1 nichts kopiert und eingefügt.

Der kleine Cote:
Zitat:
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

  • Zitat:
    *Gelöscht*
    Admininfo: siehe die SN Nutzungsbedingungen.


  • Antwort 21 von fedjo

    Hallo Fabian,
    könntest du deinen Cote:
    Zitat:
    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