Office: Hilfe bei Makro

Helfe beim Thema Hilfe bei Makro in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe eine Tabelle erstellt für eine monatliche Abrechnung. Am Abrechnungstag, was in der Regel der letzte des Monats ist,... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von msdd79, 30. März 2009.

  1. msdd79 Erfahrener User

    Hilfe bei Makro


    Hallo zusammen,

    ich habe eine Tabelle erstellt für eine monatliche Abrechnung.

    Am Abrechnungstag, was in der Regel der letzte des Monats ist, sollen die Daten aus der Vorlage in die "Daten" kopiert werden (ans Ende).
    Mit dem momentanen Makro schaffe ich es nur, die Daten ans Ende anzufügen, aber das Abrechnungsdatum wird täglich aktualisiert. Theoretisch sollen somit nur die Werte der ersten Spalten übernommen werden. Die Formeln der letzten 3 Spalten sollen allerdings erhalten bleiben.
    Klingt vielleicht etwas verwirrend, aber wenn man sich die Datei anschaut, versteht man hoffentlich, worauf ich hinaus will.

    Kann mir da eventuell jemand helfen?

    Gruß
    Michael
     
    msdd79, 30. März 2009
    #1
  2. msdd79 Erfahrener User
    leider kann ich meine datei nicht anhängen, da hier immer kommt "tried to upload empty files".

    ??
     
    msdd79, 30. März 2009
    #2
  3. miriki Erfahrener User
    Ich schätze mal, Du hast eine Formel mit =JETZT() da mit drin, die auch als solche kopiert wird. Das wäre dann ja fatal, weil die sich bei jedem Neuberechnen aktualisiert.

    Wenn ich es richtig verstanden habe, brauchst Du demnach eine Möglichkeit, nicht einfach nur die Zellen zu kopieren, sondern bei diesem Vorgang die Formeln auch gleich durch die dann errechneten, aktuellen Werte als Konstante zu ersetzen, um spätere Änderungen durch Neuberechnen zu verhindern.

    Ich weiß jetzt leider nicht, ob Du das Makro selbst erstellt hast, oder ob es durch Aufzeichnen entstanden ist. Wenn letzteres, dann ersetze den Vorgang einfach mal durch eine andere Form des Einfügens:

    Normalerweise fügst Du ja per Strg-V ein. Im Menü "Bearbeiten - Einfügen" ist dieser Hotkey ja auch aufgeführt.

    Eine Zeile tiefer steht aber auch "Inhalte einfügen", leider ohne Hotkey. den bräuchtest Du jetzt aber dafür. Aktivierst Du das zum Einfügen, kannst Du statt "alles" einfach den Radiobutton für "Werte" aktivieren und dann OK drücken.

    Vielleicht hilft Dir das ja schon weiter.

    Arbeitest Du direkt im VBA, dann ist statt "paste" das Schlüsselwort "pastespecial paste:=xlpastevalues" für dich interessant.

    Gruß, Michael
     
    miriki, 30. März 2009
    #3
  4. msdd79 Erfahrener User

    Hilfe bei Makro

    Hallo Michael,

    vielen Dank für Deine Hilfe.

    Ich habe das jetzt so gemacht, das

    * das Datum durch Werte ersetzt wird
    * die Vorlage an meine Tabelle angefügt wird
    * anschließend das Datum in der Vorlage wieder in ein Datum gewandelt wird

    Mein Code sieht nun wie folgt aus:

    Sub Neuer_Monat()
    Sheets("Vorlage").Select
    Range("F3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Dim Letzte As Integer
    Letzte = Sheets("Daten").Range("A65536").End(xlUp).Row + 1
    Sheets("Vorlage").Range("A3").CurrentRegion.Offset(1, 0).Copy Sheets("Daten").Cells(Letzte, 1)
    Range("F3").Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
    Range("F3").Select
    Selection.Copy
    Range("F4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Sheets("Daten").Select
    Selection.End(xlDown).Select
    End Sub

    Leider habe ich nun noch einige Probleme, dieses Makro über einen Comandobutton zu starten, da dazu noch irgendwas geändert werden muß, ich aber nicht weiß, was.

    Kennst Du Dich da aus?

    Gruß
    Michael
     
    msdd79, 30. März 2009
    #4
  5. miriki Erfahrener User
    Das hängt ein bißchen davon ab, was genau Du als Button genommen hast. Es gibt 2 Symbolleisten, in denen sich so ein Button versteckt. Die eine ist die "Formular" und die andere die "Steuerlemente-Toolbox" Symbolleiste.

    Die letztere ist eigentlich die elegantere Version und ich benutze die eigentlich nur. Dort bräuchtest Du eigentlich nur rechte Maustaste auf dem Button "Code anzeigen" anwählen und landest im VBA-Editor, wahrscheinlich in einer Routine namens Commandbutton1_Click oder so ähnlich. Dort brauchst Du nur die Zeile "NeuerMonat" eintragen, um Deine Routine aufzurufen, wenn der Button gedrückt wird.

    Alternativ bei einem Button der ersten Leiste: Dort kannst Du eigentlich nur über rechte Maustaste "Makro zuweisen..." was werden. Ich würde empfehlen, dort dann über "aufzeichnen..." ein Mini-Makro zu erstellen. Danach gehst Du dann per Alt-F11 in den VBA-Editor und suchst Dir dort "Modul1" oder so aus dem Projekt-Explorer (Strg-R) heraus. Dort sollte das neu aufgezeichnete Makro stehen und Du setzt dort den Aufruf von NeuerMonat" ein.

    Gruß, Michael
     
    miriki, 30. März 2009
    #5
  6. msdd79 Erfahrener User
    Ich habe das nun mal mit Hilfe Deiner Anleitung eingerichtet (über die Toolbox).

    Leider kommt da die Fehlermeldung "Laufzeitfehler 1004"

    Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.

    Das hat irgendwas damit zu tun, das ein Makro sich auf die ganze Arbeitsmappe bezieht, ein Commandbutton aber nur auf eine Tabelle.

    Momentan sieht es so auf:

    Private Sub CommandButton1_Click()
    Sheets("Vorlage").Select
    Range("F3").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Dim Letzte As Integer
    Letzte = Sheets("Daten").Range("A65536").End(xlUp).Row + 1
    Sheets("Vorlage").Range("A3").CurrentRegion.Offset(1, 0).Copy Sheets("Daten").Cells(Letzte, 1)
    Range("F3").Select
    ActiveCell.FormulaR1C1 = "=TODAY()"
    Range("F3").Select
    Selection.Copy
    Range("F4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Sheets("Daten").Select
    Selection.End(xlDown).Select
    End Sub


    Gruß
    Michael
     
    msdd79, 30. März 2009
    #6
  7. miriki Erfahrener User
    Das liegt i.a. daran, daß ein .select nur auf einem aktiven Arbeitsblatt durchgeführt werden kann. In Deinem Source steht ja einiges an .select, aber Du hast nicht geschrieben, in welcher Zeile der Fehler auftritt. Aber ich denke mal, ein entsprechendes "worksheets("xxx").activate" direkt vor der Zeile mit dem Fehler sollte dort Abhilfe schaffen, wobei "xxx" natürlich durch den entsprechenden Blattnamen ersetzt werden muß.

    Gruß, Michael
     
    miriki, 30. März 2009
    #7
  8. msdd79 Erfahrener User

    Hilfe bei Makro

    Der Fehler kommt in der 2. Zeile bei

    Range("F3").Select

    ich habe nun versucht, das "Sheets" der ersten Zeile durch ein "Worksheets" zu ersetzen.

    Leider ohne Erfolg
     
    msdd79, 30. März 2009
    #8
  9. msdd79 Erfahrener User
    Der Fehler kommt in der 2. Zeile bei

    Range("F3").Select

    ich habe nun versucht, das "Sheets" der ersten Zeile durch ein "Worksheets" zu ersetzen.

    Leider ohne Erfolg
     
    msdd79, 30. März 2009
    #9
  10. miriki Erfahrener User
    Hm, ich war davon ausgegangen, daß Du den Source aufgeteilt hast. Aber ich seh gerade, daß Du es ja direkt in das Click-Ereignis gepackt hast.

    Versuch mal folgende Aufteilung des Sourcecodes:

    a) In Tabelle1 nur das:
    Code:
    Option Explicit
    
    Private Sub CommandButton1_Click()
    
        NeuerMonat
    
    End Sub
    b) und ein separates "Modul1" mit:
    Code:
    Option Explicit
    
    Public Sub NeuerMonat()
    
        Sheets("Vorlage").Select 
        Range("F3").Select
        'usw., also den Rest des Codes
    
    End Sub
    Sonst mußt Du bei diversen Aktionen, wie z.B. dem .select, immer noch ein "activesheet." voransetzen:
    Code:
    Private Sub CommandButton2_Click()
    
        Sheets("Vorlage").Select
        ActiveSheet.Range("F3").Select
        '...
    
    End Sub
    Allgemein bin ich aber eh kein Freund des Codes, den der Makrorekorder so produziert. die ganzen .select, die der da herumstreut, sind mir immer ein Greuel.

    Die Zeilen
    Code:
    sheets("tbl").select
    range("f3").select
    selection.copy
    range("g4").select
    selection.pastespecial paste:=xlpastevalues
    lassen sich auch prima zusammenfassen zu:
    Code:
    sheets("tbl").range("f3").copy
    sheets("tbl").range("g4").pastespecial paste:=xlpastevalues
    Und wenn man kein pastespecial braucht, sondern direkt kopieren will, geht's sogar noch einfacher:
    Code:
    sheets("tbl").range("f3").copy destination:=sheets("tbl").range("g4")
    Gruß, Michael
     
  11. msdd79 Erfahrener User
    Jetzt funktioniert das einwandfrei.

    Danke für Deine Hilfe und Ausdauer.

    Gruß
    Michael
     
Thema:

Hilfe bei Makro

Die Seite wird geladen...
  1. Hilfe bei Makro - Similar Threads - Hilfe Makro

  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. Hilfe wie Löst man ein Makro über einem anderen Makro aus ....

    in Microsoft Excel Hilfe
    Hilfe wie Löst man ein Makro über einem anderen Makro aus ....: welches sich in der anderen Arbeitsmappe Befindet. Hallo ...habe gerade den Vollen Stress - Ich möchte von Arbeitsmappe 1 in den Arbeitsmappen 2 - 3 jeweils das gleiche Makro auslösen. Mein...
  4. 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...
  5. Bitte um Hilfe bei erstellung eines Makros, chat GPT hängt sich auf

    in Microsoft Excel Hilfe
    Bitte um Hilfe bei erstellung eines Makros, chat GPT hängt sich auf: Hallo Bitte kann mir jemand helfen ich bräuchte ein Makro welches mir eine Liste erstellt aus der Zahlenkombination 0-6. beginnt soll beginnen mit 0 0 0 0 0 0 0 dann 0 0 0 0 0 0 1 aber auch...
  6. Brauche Hilfe bei einer Makro

    in Microsoft Excel Hilfe
    Brauche Hilfe bei einer Makro: Hey, ich bin leider absolut unbewandert in Makros, ich benötige jedoch für die Arbeit diese Liste :( Evtl kann mir ja wer helfen. Diese Tabelle habe ich im Internet gefunden und die passt gut zu...
  7. Hilfe benötigt bei Fehler in Makro

    in Microsoft Excel Hilfe
    Hilfe benötigt bei Fehler in Makro: Guten Tag erstmal. Direkt vorweg, Excel ist absolutes Neuland für mich. Habe jetzt nur versucht mich rein zu finden um einen Fehler zu finden, da derjenige, der die Makros vor einigen Jahren...
  8. Hilfe

    in Microsoft Excel Hilfe
    Hilfe: Liebe Alle, ich bin ganz neu in diesem Forum und bräuchte Hilfe zu einem Excel Projekt. Ich möchte (siehe Bild 1) das die Felder die dort ausgefüllt werden automatisch in Bild 2 übertragen in...
  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