Office: Makro in Excel 2003 läuft aber nicht in 2010

Helfe beim Thema Makro in Excel 2003 läuft aber nicht in 2010 in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo ich habe seit Jahren ein funktionsfähiges Makro, das ursprünglich mit dem Makrorecorder aufgezeichnet wurde und etwas modifiziert wurde. Jetzt... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Hamburger, 7. September 2012.

  1. Hamburger Neuer User

    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 Fehler liegt in der Funktionszeile mit dem Befehl ActiveCell.FormularR1C1="=WENN(ZS(-7)=0;0;1)".

    Bei Excel 2003 ist das Ergebnis eine Null oder eine 1.
    Bei Excel 2010 lautet der Zellinhalt #Name?.

    Ich habe versucht WENN(ZS(-7)=0;0;1)" durch IF(RC(-7)=0;0;1 zu ersetzen, allerdings erhalte ich dann die Meldung Laufzeitfehler 1004, Fehler in der Methode "FormuaR1C1 des Objektes Range.
    Hier ist das Makro.
    Sub Mixen()
    Application.StatusBar = "Makro läuft"
    Range("C4").Select
    ActiveCell.FormulaR1C1 = "=Zufallszahl()"
    Selection.AutoFill Destination:=Range("C4:C100"), Type:= _
    xlFillDefault
    Range("C4:C100").Select
    Range("C4:C100").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Range("A4:C100").Select
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("C5"), Order1:= _
    xlAscending, Header:=xlGuess, OrderCustom:=1 _
    , MatchCase:=False, Orientation:=xlTopToBottom
    Columns("B:C").Select
    Selection.EntireColumn.Hidden = True
    Range("D4").Select
    'Neuer Teil

    ActiveCell.Offset(0, 4).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-7]="""",1,0)"
    Selection.AutoFill Destination:=ActiveCell.Range("A1:A97"), Type _
    :=xlFillDefault
    ActiveCell.Range("A1:A97").Select
    ActiveWindow.ScrollRow = 4
    ActiveCell.Offset(0, -7).Columns("A:D").EntireColumn.Select
    Selection.EntireColumn.Hidden = False
    ActiveCell.Offset(3, 0).Range("A1:H97").Select
    Selection.Sort Key1:=ActiveCell.Offset(0, 7).Range("A1") _
    , Order1:=xlDescending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:= _
    xlTopToBottom
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollColumn = 1
    ActiveWindow.SmallScroll ToRight:=2
    ActiveCell.Offset(0, 7).Columns("A:A").EntireColumn.Select
    Selection.Delete Shift:=xlToLeft
    ActiveWindow.SmallScroll ToRight:=-2
    ActiveCell.Offset(0, -6).Columns("A:B").EntireColumn.Select
    Selection.EntireColumn.Hidden = True
    ActiveCell.Offset(4, 2).Range("A1").Select
    Range("d4").Select

    End Sub

    Wie muss die Befehlszeile geändert werden?Makro in  Excel 2003 läuft  aber nicht in 2010 :confused:
     
    Hamburger, 7. September 2012
    #1
  2. Exl121150 Erfahrener User
    Hallo,

    Außer in der Zeile
    ActiveCell.FormulaR1C1 = "=IF(RC[-7]="""",1,0)"
    kommt bei Dir keine Formelzeile mit IF vor. Und diese Zeile scheint mir in Ordnung zu sein, wenn man die davor liegenden Makrozeilen mit einrechnet.

    Die Fehlermeldung "#Name?" weist darauf hin, dass ein Funktionsname im Arbeitsblatt nicht gefunden werden kann. Und da sehe ich nicht, was da schief laufen soll in dieser Zeile.

    Vielmehr gibt es eine ganz andere Zeile, die da so ziemlich zwingend infrage kommt:
    ActiveCell.FormulaR1C1 = "=Zufallszahl()"
    Falls Du nicht zufällig eine selbstgeschneiderte Funktion "Zufallszahl()" in VBA hast, ist das ganau die Fehlerzeile.
    Die Methode "Active.FormulaR1C1" erwartet zwingend, dass die im Folgenden zugewiesene Formel lauter englische Funktionsnamen enthält und keine deutschen.
    Entweder Du schreibst:
    ActiveCell.FormulaR1C1Local = "=Zufallszahl()"
    oder Du schreibst:
    ActiveCell.FormulaR1C1 = "=RAND()"
     
    Zuletzt bearbeitet: 7. September 2012
    Exl121150, 7. September 2012
    #2
  3. Hamburger Neuer User
    Hallo Anton,

    danke für die Antwort, aber hier liegt nicht der Fehler. Das Makro wurde von einer alten Version mit einem Makrorecorder erzeugt, der deutsche Befehle kannte. Lasse ich das Makro im Einzelschritt ablaufen, so erhalte ich bei Zufallszahl() eine Zahl zwischen 0 und 1 ersetze ich aber Zufallszahl durch Rand() erhalte ich #Name? als Zellwert.

    Erst bei ActiveCell.FormulaR1C1 = "=wenn(ZS(-7)=0;0;1) erhalte ich keine Null oder eins, sondern #Name.

    Hier noch einmal das ursprüngliche Makro aus dem Jahr 2001, wie es immer noch auf Excel 2003 unter XP läuft, aber wie gesagt, nicht mehr unter MAC Excel 2010.
    Sub Mixen()

    Range("C4").Select
    ActiveCell.FormulaR1C1 = "=Zufallszahl()"
    Selection.AutoFill Destination:=Range("C4:C100"), Type:= _
    xlFillDefault
    Range("C4:C100").Select
    Range("C4:C100").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Range("A4:C100").Select
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("C5"), Order1:= _
    xlAscending, Header:=xlGuess, OrderCustom:=1 _
    , MatchCase:=False, Orientation:=xlTopToBottom
    Columns("B:C").Select
    Selection.EntireColumn.Hidden = True
    Range("D4").Select
    'Neuer Teil

    ActiveCell.Offset(0, 4).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=WENN(ZS(-7)=0;0;1)"
    Selection.AutoFill Destination:=ActiveCell.Range("A1:A97"), Type _
    :=xlFillDefault
    ActiveCell.Range("A1:A97").Select
    ActiveWindow.ScrollRow = 4
    ActiveCell.Offset(0, -7).Columns("A:D").EntireColumn.Select
    Selection.EntireColumn.Hidden = False
    ActiveCell.Offset(3, 0).Range("A1:H97").Select
    Selection.Sort Key1:=ActiveCell.Offset(0, 7).Range("A1") _
    , Order1:=xlDescending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:= _
    xlTopToBottom
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollColumn = 1
    ActiveWindow.SmallScroll ToRight:=2
    ActiveCell.Offset(0, 7).Columns("A:A").EntireColumn.Select
    Selection.Delete Shift:=xlToLeft
    ActiveWindow.SmallScroll ToRight:=-2
    ActiveCell.Offset(0, -6).Columns("A:B").EntireColumn.Select
    Selection.EntireColumn.Hidden = True
    ActiveCell.Offset(4, 2).Range("A1").Select
    Range("d4").Select

    End Sub

    Noch eine gute Idee?
     
    Hamburger, 7. September 2012
    #3
  4. Hamburger Neuer User

    Makro in Excel 2003 läuft aber nicht in 2010

    Hallo Anton,

    der Hinweis auf ActiveCell.FormulaR1C1local hat geholfen.

    Nachdem ich alle ActiveCell.FormulaR1C1...... durch ActiveCell.FormulaR1C1local ...... ersetzt habe, läuft das Makro fehlerfrei.
    Danke!
     
    Hamburger, 7. September 2012
    #4
  5. miriki Erfahrener User
    Und das ist genau das, was Anton meinte und schrieb...

    .formula erwartet die Schreibweise der Formel in englischer Schreibweise, also IF(), RAND() usw.
    .formulalocal erwartet die Schreibweise in, Überraschung!, "lokaler" Schreibweise, also wohl deutsch bei dir, womit WENN(), ZUFALLSZAHL() usw. möglich sind.
    (entsprechendes gilt natürlich auch für .formular1c1 und .formular1c1local)

    Ich weiß jetzt nur nicht, was passiert, wenn mann im deutschen Raum
    .formulalocal = "=zufallszahl(100)"
    im Source setzt und dieser Code dann im z.B. spanischen Raum ausgeführt wird. Ist das von der Systemsprache (Windows) abhängig? Eher nicht, schätze ich. Also dann von der Excel-Sprache? Würde eher Sinn machen. Dann müßte der Spanier sein Excel auf deutsch umstellen, damit der Code sauber läuft? Irgendwie auch blöd.

    Also ich bleib lieber bei formula ohne das local und gewöhn mich an die englische Schreibweise. Das sollte grundsätzlich und überall ohne Probleme laufen.

    Gruß, Michael
     
Thema:

Makro in Excel 2003 läuft aber nicht in 2010

Die Seite wird geladen...
  1. Makro in Excel 2003 läuft aber nicht in 2010 - Similar Threads - Makro Excel 2003

  2. Makro Inhalt löschen wenn Bedingung erfüllt

    in Microsoft Excel Hilfe
    Makro Inhalt löschen wenn Bedingung erfüllt: Hallo, Ich hab ein kleines Problem und benötigte Experte Wissen im VPA programmieren. Wenn ich in meiner Tabelle1 in der Zeile A1 den Wert ändere, dann soll er den Inhalt von Zeile B1 und C1...
  3. VBA Makro - PDF erstellen und speichern auf lokalem Netzwerk

    in Microsoft Excel Hilfe
    VBA Makro - PDF erstellen und speichern auf lokalem Netzwerk: Hallo zusammen, ich bin gerade dabei eine Excel Tabelle mit einem Makro zu erstellen, die von mehreren Personen genutzt wird. Jetzt stehe ich vor dem Problem, dass der angegebene Pfad nur auf...
  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. 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...
  6. Makro für Excel 2003 in Excel 2007

    in Microsoft Excel Hilfe
    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...
  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