Office: Makro für Excel 2003 in Excel 2007

Helfe beim Thema Makro für Excel 2003 in Excel 2007 in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, für Excel 2003 wurde mir eine Makro programmiert, die ich jetzt gerne auch in Excel 2007 verwenden möchte. Leider kann ich sie nicht in Excel... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Schokoschwan, 16. Februar 2010.

  1. Makro für Excel 2003 in Excel 2007


    Hallo,

    für Excel 2003 wurde mir eine Makro programmiert, die ich jetzt gerne auch in Excel 2007 verwenden möchte. Leider kann ich sie nicht in Excel 2007 finden, obwohl sie dort anscheinend ausgeführt wird. Stattdessen bekomme ich die Fehlermeldung:

    Laufzeitfehler '5': Ungültiger Prozeduraufruf oder ungültiges Argument.

    Die Makro für den CommandBar lautet folgendermaßen:

    Sub SCMCommandBars()
    ' Application.Dialogs(xlDialogOptionsView).Show
    ' Application.Dialogs(xlDialogWorkbookOptions).Show
    Application.Dialogs(xlDialogCustomizeToolbar).Show
    '** Zum Testen einschalten
    ' Stop
    ' Exit Sub

    '**** msoBarLeft, msoBarTop, msoBarRight, msoBarBottom,
    '**** msoBarFloating, msoBarPopup, msoBarMenuBar
    Set newBar = CommandBars.Add(Name:="SCM, WW, FI", _
    Position:=msoBarTop, Temporary:=False)

    newBar.Visible = True
    '*****
    Set newItem = newBar.Controls.Add(Type:=msoControlButton, Temporary:=False)
    With newItem
    ' .BeginGroup = True
    .Caption = "Blattschutz aufheben"
    .FaceId = 59
    .OnAction = "WorkSheet.TabelleBlattSchutzAufheben"
    .Style = msoButtonIcon
    End With
    '*****
    Set newItem = newBar.Controls.Add(Type:=msoControlButton, Temporary:=False)
    With newItem
    ' .BeginGroup = True
    .Caption = "Blattschutz setzen"
    .FaceId = 276
    .OnAction = "WorkSheet.TabelleBlattSchutzSetzen"
    .Style = msoButtonIcon
    End With
    '*****
    End Sub

    Die Makro für das WorkSheet scheint an sich zu funktionieren.

    Kennt jemand das Problem und weiß jemand zufällig eine Lösung dafür?

    Außerdem würde ich gerne in die Makro mit einfügen, dass jede Zelle als "gesperrt" formatiert wird, die nicht farblich markiert ist. Hat dafür jemand vielleicht eine Idee?

    Danke!

    VG

    Swantje
     
    Schokoschwan, 16. Februar 2010
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    Meinst Du damit, dass Du unter Excel2007 die Buttons für die beiden Makros nicht mehr finden kannst?
    Diese sind leicht zu finden. Wenn Du in der Multifunktionsleiste nachschaust, siehst Du einen Tabulator mit der Aufschrift 'Add-Ins'. Wenn Du diesen anklickst, wirst Du die beiden Buttons wieder finden in der Gruppe 'Benutzerdefinierte Symbolleisten' (in Gestalt von 2 Smileys).
    Zeigst Du mit der Maus auf den lachenden Smiley, wird 'SCM, WW, FI: Blattschutz aufheben' angezeigt, beim anderen jedoch 'SCM, WW, FI: Blattschutz setzen'
    wobei die rot gekennzeichnete Alternative die Ursache des Fehlers ist.
    Da ich Deinen Makro-Code nicht kenne, kann ich in gewissem Rahmen nur vermuten, wie es dazu kam:
    Wenn Du Deine Arbeitsmappe (die die Makros enthält) das 1. Mal öffnest, wird vermutlich das Makro 'SCMCommandBars()' automatisch gestartet. Die Folge ist, dass die beiden Smiley-Buttons eingefügt werden. Sie stehen ab diesem Zeitpunkt immer zur Verfügung, auch dann, wenn Du die Arbeitsmappe wieder schließst.
    Öffnest Du diese Arbeitsmappe ein weiteres Mal, existiert in Excel die Befehlsleiste mit den Smiley-Buttons bereits (in der Befehlsleiste 'SCM, WW, FI'). Da die Makroprogrammierung versucht - genauso wie beim 1. Mal - zuerst die Befehlsleiste (und danach die Smiley-Buttons) auch jetzt wieder einzufügen, obwohl sie schon existieren, gibt es ein Problem: Eine Befehlsleiste, die mit ihrem Namen ('SCM, WW, FI') bereits existiert, kann nicht noch ein 2. Mal mit diesem Namen hinzugefügt (Methode .Add) werden.

    Es gibt 2 mögliche Auswege, um den Fehler zu vermeiden:

    1) Die eigentliche saubere Lösung ist Folgende:
    Man fügt in das Klassencodemodul von 'DieseArbeitsmappe' folgende Event-Handler-Prozedur ein:
    Code:
    Private Sub Workbook_Deactivate()
      CommandBars("SCM, WW, FI").Delete
    End Sub
    Dadurch wird jedesmal, wenn die Arbeitsmappe verlassen wird (sei es, weil die Arbeitsmappe geschlossen wird oder sei es, weil zu einer anderen geöffneten Arbeitsmappe gewechselt wird), die Befehlsleiste mit den beiden Smileys entfernt.
    Sobald wieder diese Arbeitsmappe aktiviert wird (sei es, weil sie geöffnet wird, oder sei es, weil von einer anderen Arbeitsmappe zu dieser gewechselt wird), wird Dein zitiertes Makro gestartet, die noch nicht existierende Befehlsleiste mit den beiden Smileys eingefügt und alles ist wieder in bester Ordnung. ... usw.

    2) Die 2. (weniger saubere) Lösung ist Folgende:
    Du fragst im von Dir zitierten Makro ab, ob die Befehlsleiste 'SCM, WW, FI' bereits existiert. Tut sie das nicht, wird sie wie bisher eingefügt; existiert sie bereits, wird natürlich das Einfügen unterlassen.
    Code:
    On Error Resume Next
    Set newBar = CommandBars.Add(Name:="SCM, WW, FI", _ 
    Position:=msoBarTop, Temporary:=False)
    If Err Then Exit Sub
    Es brauchen nur die 2 Codezeilen hinzugefügt werden:
    a)... On Error Resume Next
    b)... If Err Then Exit Sub
    Der große Nachteil dieser (unsauberen) Lösung ist, dass die Befehlsleiste mit den beiden Smileys auch nach dem Schließen der Arbeitsmappe in Excel erhalten bleibt und somit eventuell die Arbeit mit anderen Arbeitsmappen stört/behindert/Fehler produziert, etc.
     
    Exl121150, 16. Februar 2010
    #2
Thema:

Makro für Excel 2003 in Excel 2007

Die Seite wird geladen...
  1. Makro für Excel 2003 in Excel 2007 - Similar Threads - Makro Excel 2003

  2. Speichern mit dem Titel der Zelle A2

    in Microsoft Excel Hilfe
    Speichern mit dem Titel der Zelle A2: Moin moin, Ich habe per Makro einen Arbeitsablauf aufgezeichnet der soweit auch funktioniert. Dieser Endet jedoch im "Speichern Unter" Fenster, welches durch das Klicken von "Drucken als PDF"...
  3. Kontrollkästchen (mehrere) Makro kopieren, Problem: Zellen nicht gegenseitig überschreiben

    in Microsoft Excel Hilfe
    Kontrollkästchen (mehrere) Makro kopieren, Problem: Zellen nicht gegenseitig überschreiben: Hallo zusammen, ich arbeite gerade an einer Vereinfachung für Bestellungen. Ich habe es hingekriegt, dass Kontrollkästchen an zu wählen sind und dann bestimmte Informationen kopiert werden. Jetzt...
  4. Makro in Excel 2003 funktioniert nicht mehr

    in Microsoft Excel Hilfe
    Makro in Excel 2003 funktioniert nicht mehr: Hallo zusammen, ich hatte vor vielen Jahren in Excel 2003 einen Kalender mit Makros erstellt. Nachdem ich auf Excel 2016 gegangen bin, mußte ich feststellen, dass es Fehlermelunden plötzlich gibt,...
  5. Makro in Excel 2003 läuft aber nicht in 2010

    in Microsoft Excel Hilfe
    Makro in Excel 2003 läuft aber nicht in 2010: Hallo ich habe seit Jahren ein funktionsfähiges Makro, das ursprünglich mit dem Makrorecorder aufgezeichnet wurde und etwas modifiziert wurde. Jetzt auf dem Mac läuft es nicht mehr fehlerfrei. Der...
  6. Excel 2003 Makro neue Zeile

    in Microsoft Excel Hilfe
    Excel 2003 Makro neue Zeile: Servuz miteinander, ich wollte ein Makro schreiben, in Excel 2003, um eine neue Zeile zu erzeugen. Um den Code zu bekommen, habe ich ein Makro aufgezeichnet. Rows("4:4").Select...
  7. [Excel 2003] Probleme bei Makro das bei Zelländerung auslöst

    in Microsoft Excel Hilfe
    [Excel 2003] Probleme bei Makro das bei Zelländerung auslöst: Hallo, ich bin gerade dabei spaßeshalber eine Art Lotto-Datei zu erstellen. Nun habe ich das Problem, dass ich den Wert des Feldes E2 per Makro zum Feld F2 addieren will, das Makro soll jedes...
  8. EXCEL 2003 Makro!! brauche Hilfe bitte....

    in Microsoft Excel Hilfe
    EXCEL 2003 Makro!! brauche Hilfe bitte....: Guten Tag.... ich habe ein Problem mit Excel und zwar möchte ich ein Makro schreiben das in ein Tabellenblatt nach rechts geht etwas kopiert und wieder nach links auf das eine Tabellenblatt und...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden