Office: Makro abspeichern

Helfe beim Thema Makro abspeichern in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Excelprofies, mich plagt folgendes Problem: Ich möchte ein Makro benutzen welches ich hier im Forum gefunden habe, um Zahlen aus grünen,... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von sb@modacc, 10. Juli 2009.

  1. Makro abspeichern


    Hallo Excelprofies,


    mich plagt folgendes Problem:

    Ich möchte ein Makro benutzen welches ich hier im Forum gefunden habe, um Zahlen aus grünen, gelben und roten Farbbereichen zu summieren. Das Makro ist wie folgt:


    Function Farbsumme(Bereich As Range, Farbe As Integer)
    Dim Zelle As Object
    Application.Volatile
    For Each Zelle In Bereich
    If Zelle.Interior.ColorIndex = Farbe Then
    Farbsumme = Farbsumme + Zelle
    End If
    Next
    End Function

    Die Funktion um beispielsweise die gelb hinterlegten Felder zu addieren ist wie folgt:

    =Farbsumme(B7:B56;6)

    Das Funktioniert auch super, solange bis ich die Datei als Arbeitsmappe mit Makros speichere und neu öffne. Dann steht in der Zelle nurnoch #NAME?

    Was mache ich falsch? Muss ich irgendwie etwas im VBA einstellen? Ich mach sowas mit Makros zum ersten mal.


    Danke für Eure Hilfe!

    MfG

    Stefan
     
    sb@modacc, 10. Juli 2009
    #1
  2. Exl121150 Erfahrener User
    Hallo Stefan,

    wenn Du folgendes VBA-Makro verwendest, dürfte das Problem beseitigt sein:

    Code:
    Public Function Farbsumme(Bereich As Range, Farbe As Variant) As Variant
      Application.Volatile
      Dim Zelle As Range
      Dim FarbSu As Variant
      FarbSu = 0
      For Each Zelle In Bereich.Cells
        If Zelle.Interior.ColorIndex = Farbe Then
          FarbSu = FarbSu + Zelle.Value
        End If
      Next Zelle
      Farbsumme = FarbSu
    End Function
    Zur Erklärung:
    Dein Makro und mein modifiziertes Makro verwenden die For Each ... Next-Schleife, in der eine If ... Then ... End If-Abfrage enthalten ist und in dieser ist die eigentliche Farbsummations-Anweisung enthalten:
    Dein Makro: Farbsumme = Farbsumme + Zelle
    Mein Makro: FarbSu = FarbSu + Zelle .Value
    Da der Name der Funktion 'Farbsumme' lautet, in Deiner Summationsanweisung der Name 'Farbsumme' rechts vom Zuweisungsoperator '=' vorkommt, wird dort nicht der Inhalt einer Variablen 'Farbsumme' verwendet, sondern wiederum die Funktion 'Farbsumme' (rekursiv) aufgerufen. Da in Deiner Funktion nirgendwo eine Bedingung definiert ist, durch die die Rekursion beendet würde, wird quasi eine unendliche Rekursion ausgeführt mit der Gefahr des (Stapel)speicherüberlaufs - im einfachsten Fall kommt es zu einem Systemhänger in der Exceldatei, im schlimmsten Fall zu einem Absturz der Exceldatei.

    Ich habe für die Summationsvariable (FarbSu) einen anderen Namen als den der Funktion (Farbsumme) gewählt, habe sie außerdem mit dem Startwert 0 belegt und habe den Wert der Variablen 'FarbSu' in der vorletzten Makrozeile dem Funktionsnamen 'Farbsumme' (links von '=' !!) zugewiesen, was in VBA bedeutet, dass die Funktion einen Rückgabewert erhält.
    Außerdem habe ich weitere Variablen mit expliziten bzw. effizienteren Datentypen versehen.
     
    Exl121150, 11. Juli 2009
    #2
  3. schatzi Super-Moderator
    Hallo Exl121150!
    Das ist IMHO nicht richtig! Es wird genauso addiert wie in deinem Code. Um die Funktion rekursiv aus sich selbst aufzurufen, müssten auch die Funktionsparameter angegeben werden; dies ist hier aber nicht der Fall. Das wird vom Fragesteller ja auch bestätigt:
    Die Fehlermeldung "#NAME!" rührt wohl eher daher, dass beim erneuten Öffnen der Mappe die Makros möglicherweise einfach nicht aktiviert wurden und daher die Funktion als solche gar nicht gefunden werden kann.
     
    schatzi, 11. Juli 2009
    #3
  4. Exl121150 Erfahrener User

    Makro abspeichern

    Hallo schatzi,

    Du hast recht. Heute habe ich die Funktion nochmals getestet, und da konnte ich den Hänger in der Excel-Datei nicht mehr reproduzieren, der beim 1. Test gestern aufgetreten ist. Musste wohl ein unglücklicher/zufälliger Umstand gewesen, obwohl ich persönlich lieber Code schreibe, der eindeutig deklariert und initialisiert ist.
    Manchmal ist es mir auch schon passiert - durch Tippfehler in einem Bezeichner - dass ich endlos suchen musste, weil leider die Fehlermeldung eine sehr "hilfreiche" war.

    @Stefan:
    Je nach dem welche Excel-Version Du hast: auf alle Fälle muss der Zugriff auf die Makros während des Ladens der Excel-Datei aktiv(iert) sein trotz eventueller Warnungen durch Excel.
    Sonst gelten sie als nicht verhanden und Excel kann im Arbeitsblatt vorhandene benutzerdefinierte Funktionen nicht finden.
    Daraus entnehme ich, dass Du Excel2007 hast. Dann musst Du die Datei an einem 'vertrauenswürdigen Ort' speichern, um Dir die lästige Aktiviererei beim Öffnen der Datei zu ersparen.
    Falls Du die Datei nicht an einem vertrauenswürden Ort gespeichert hast und auch keine Aufforderung zur (Warnung vor) Aktivierung der Makros erscheint, musst Du ins Vertrauensstellungscenter (über Excel-Optionen) gehen und dort (Button 'Einstellungen für das Vertrauensstellungscenter...') die Option 'Alle Makros mit Benachrichtigung deaktivieren' unter 'Einstellungen für Makros' einstellen (die anderen 3 Optionen sind in Deiner Situation in der Regel nicht hilfreich).
     
    Exl121150, 12. Juli 2009
    #4
  5. Super, es wurde tatsächlich bloß das Makro geblockt, jetzt klappts wieder einwandfrei. :-D

    Danke
     
    sb@modacc, 13. Juli 2009
    #5
Thema:

Makro abspeichern

Die Seite wird geladen...
  1. Makro abspeichern - Similar Threads - Makro abspeichern

  2. Name der Datei durch Excel geändert

    in Microsoft Excel Hilfe
    Name der Datei durch Excel geändert: Hallo und guten Abend, Die Datei wird mittels Button (VBA) zwischen gesichert. Das Makro sichert zuvor die Datei und erstellt zus. eine Sicherungsdatei mit der Erweiterung Beispiel-"Sich"....
  3. Ein Makro für mehrere Register

    in Microsoft Excel Hilfe
    Ein Makro für mehrere Register: Moin, ich habe ein Makro wo Daten aus dem Register Master kopiert werden und Register, das mit einem Datum beschriftet ist. Ich möchte in Jedem Register ein Button haben was Daten aus dem Master...
  4. Makro öffnet unerwartete Datei

    in Microsoft Excel Hilfe
    Makro öffnet unerwartete Datei: Hallo Forum, ich brächte euer Schwarmwissen. Arbeite mit Excel eine Auftragsbearbeitung. Dort habe ich mir einen Button mit Makro erstellt und nutze diesen schon lange. Das Makro generiert ein...
  5. VBA Makro einfügen CSV, verarbeiten und abspeichern

    in Microsoft Excel Hilfe
    VBA Makro einfügen CSV, verarbeiten und abspeichern: Hallo zusammen, erstmal vorab meine VBA Kenntnisse sind sehr rudimentär. Aufgabenstellung in Kurz: Ich hab 2 Dateien, eine Hauptdatei (IDXXXX_8x8_GV-contrast.xlsm) und eine CSV die...
  6. CSV Datei mit Makro filtern und abspeichern

    in Microsoft Excel Hilfe
    CSV Datei mit Makro filtern und abspeichern: Hallo zusammen, habe folgendes Problem. Ich bearbeite recht große csv Dateien (1,5GB) die ich immer nach gleichen Kriterien filtere, da nicht alle Datensätze benötigt werden. Jetzt wollte ich...
  7. Dateiname in Zellen abspeichern, automatisiert

    in Microsoft Excel Hilfe
    Dateiname in Zellen abspeichern, automatisiert: Schönen guten Tag, ich habe aus einer Messreihe mehrere CSV-Dateien erzeugt, die folgende Struktur besitzen, siehe Ausschnitt: [ATTACH] Die ersten vier Spalten sind jeweils mit Werten gefüllt...
  8. Universelles Makro zum abspeichern von Dateien

    in Microsoft Excel Hilfe
    Universelles Makro zum abspeichern von Dateien: Hallo zusammen, ich suche ein Makro, dass ich für Word in der Form schon habe, für Excel, mit dem ich eine Datei abspeichern und ein Teil des Dateinames ([heutiges Datum],) schon vorgeben kann....
  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