Office: (Office 2010) Hilfe bei Makro schreiben

Helfe beim Thema Hilfe bei Makro schreiben in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen Ich wollte mir ein kleines Tool zum Basteln meiner monatlichen Provisionen basteln. Ich habe eine Excel Mappe mit folgenden... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von SaarVampire, 2. Juli 2015.

  1. Hilfe bei Makro schreiben


    Hallo zusammen

    Ich wollte mir ein kleines Tool zum Basteln meiner monatlichen Provisionen basteln.

    Ich habe eine Excel Mappe mit folgenden Datenblätter:

    1. Gunddaten
    2. Vertragsprovision
    3. Gesamtübersicht.

    Das Datenblatt 1 "Grunddaten" ist unveränderlich und bietet nur fixe Werte für die Berechnung auf Datenblatt "Vertragsprovision"
    Das Datenblatt 2 "Vertragsprovision" ist soweit mit formeln hinterlegt, dass mir am Ende der Seite die Provision für den "aktuellen" Vertrag angezeigt wird.
    Jetzt kommt es:
    Das Datenblatt 3 "Gesamtübersicht" soll mir eine Auflistung aller Verträge anzeigen:

    Nachdem ich auf dem Datenblatt "Vertragsprovision" alle Daten befüllt habe, soll per Klick auf einen Button folgendes geschehen:
    1. Vertragsprovision!C38 soll übernommen werden nach Gesamtübersicht!B3
    2. Vertragsprovision!C40 soll übernommen werden nach Gesamtübersicht!C3
    3. Vertragsprovision!C5 soll übernommen werden nach Gesamtübersicht!D3
    4. Vertragsprovision!I7 soll übernommen werden nach Gesamtübersicht!E3
    5. Vertragsprovision!D35 soll übernommen werden nach Gesamtübersicht!F3
    6. Das Feld Gesamtübersicht A3 soll mit einem Zeitstempel tt.mm.jj versehen werden.
    7. Nach Übernahme der vorangenannten Daten soll eine neue Zeile oberhalb eingefügt werden, damit die Zeile 3 für den Nächsten Datensatz wieder frei ist. Die zuvor übernommen
    Daten sollen quasi mit jedem neuen Datensatz nach unten verschoben werden.

    Leider bin ich zwar mit Excel sehr fit, aber mit Makro und Buttons, die Makro-Abläufe anstoßen kenne ich mich leider gar nicht aus. Es wäre daher nett, wenn mir jemand ein fertiges Script senden kann, dass ich nur noch einpflegen muss und mir kurz erklären wie ich einen Button erstelle und diesen mit dem Makro-Skript verknüpfe.

    Vielen Dank für Eure Hilfe.
     
    SaarVampire, 2. Juli 2015
    #1
  2. Chrischi305
    Chrischi305 Erfahrener User
    Hallo, dein erstelltes Problem kannst du auch mit dem Makrorekorder lösen. Diesen findest du im Reiter "Entwicklertools". Sollte dieser Reiter nicht in deinem Menüband vorhanden sein, so musst du ihn unter Optionen aktivieren (Menüband anpassen). In Entwicklertools kannst du auch Buttons erstellen und diese mit einem Makro belegen. Der Makrorekorder funktioniert recht einfach, den Rekorder starten, deine o.g. Wünsche direkt in den Tabellenblättern ausführen und Rekorder beenden und der gesamte Code steht in einem Modul in Visual Basic im Reiter Entwicklertools. Solltest du trotzdem wünschen den Code zu bekommen, so reichte ich ihn gerne nach :)

    LG
     
    Zuletzt bearbeitet: 2. Juli 2015
    Chrischi305, 2. Juli 2015
    #2
  3. Hallo Chrischi
    Ich habe es mit dem Makrorekorder versucht, aber es will nicht so wie ich es will. Wenn ich das Makro ausführe übernimmt er zwar die Daten auf das "Übersichtsblatt" fügt auch eine neue Zeile ein, verschiebt aber auch alle Zellen auf dem "Vertragsposition" Blatt und somit stimmt das Makro für den nächsten durchgang nicht mehr.
    Es wäre daher sehr nett, wenn du mir den Code senden könntest. Vielen Dank.

    Achja... wie funktioniert das dann mit dem Button?

    LG
     
    SaarVampire, 2. Juli 2015
    #3
  4. Chrischi305
    Chrischi305 Erfahrener User

    Hilfe bei Makro schreiben

    Hallo SaarVampire,

    so sollte dein Code ausschauen, wenn du den Makrorekorder verwendet hast (wenn du dich genauer mit der Materie beschäftigen willst, wäre dies ein guter Start zum vergleichen, was die Unterschiede zwischen deinem Code per Makrorekorder und meinen sind; "ActiveWindow.SmallScroll" kann dabei getrost vernachlässigt werden, da dies nur dein Mausrad ist, welches du betätigt hast, um zu scrollen) :

    Code:
    Sub Makro1()
    '
    ' Makro1 Makro
    '
    
    '
        Sheets("Vertragsprovision").Select
        ActiveWindow.SmallScroll Down:=6
        Range("C38").Select
        Selection.Copy
        Sheets("Gesamtübersicht").Select
        ActiveWindow.SmallScroll Down:=-12
        Range("B3").Select
        ActiveSheet.Paste
        Sheets("Vertragsprovision").Select
        Range("C40").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Gesamtübersicht").Select
        Range("C3").Select
        ActiveSheet.Paste
        Sheets("Vertragsprovision").Select
        ActiveWindow.SmallScroll Down:=-6
        Range("C5").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Gesamtübersicht").Select
        Range("D3").Select
        ActiveSheet.Paste
        Sheets("Vertragsprovision").Select
        Range("I7").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Gesamtübersicht").Select
        Range("E3").Select
        ActiveSheet.Paste
        Sheets("Vertragsprovision").Select
        Range("D35").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Gesamtübersicht").Select
        Range("F3").Select
        ActiveSheet.Paste
        Range("A3").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "=TODAY()"
        Rows("3:3").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    End Sub
    

    Und hier der gekürzte Code:

    Code:
    Sub Makro1()
    
    With ActiveWorkbook.Sheets("Gesamtübersicht")
        Sheets("Vertragsprovision").Range("C38").Copy Destination:=.Range("B3")
        Sheets("Vertragsprovision").Range("C40").Copy Destination:=.Range("C3")
        Sheets("Vertragsprovision").Range("C5").Copy Destination:=.Range("D3")
        Sheets("Vertragsprovision").Range("I7").Copy Destination:=.Range("E3")
        Sheets("Vertragsprovision").Range("D35").Copy Destination:=.Range("F3")
        .Range("A3").FormulaR1C1 = "=TODAY()"
        .Row("3:3").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    End With
    End Sub
    Die eingefügte Zeile, kann dadurch passieren, dass der Makrorekorder, viel mit "ActiveSheet" arbeitet. Sollte das aktive Blatt Vertragsprovision anstatt Gesamtübersicht sein, so wird dort die Zeile eingefügt. Anders kann ich es mir im Moment nicht erklären.

    Um einen Button zu erstellen, gibt es im Reiter "Entwicklertools" den Punkt "Einfügen", sieht aus, wie ein Aktenkoffer mit Schraubendreher und Maulschlüssel. Dort hast du 2 Unterteilungen, einmal "Formularsteuerelemente" und "Active-X Elemente". Bei Formularsteuerelemente wählst du den ersten Eintrag aus, dies wäre die Schaltfäche. Diese Schaltfläche muss dann innerhalb deines Arbeitsblattes gesetzt werden (erkennbar daran, dass die Maus zum Fadenkreuz wird). Hast du die Größe bestimmt und lässt deine linke Maustaste los erscheint ein Fenster indem du das Makro zuweisen kannst. Dort wählst du Makro1 aus (oder wie dein Makro heißt) und nach dem bestätigen, sollte die Schaltfläche sichtbar sein. Bedenke bitte, da du nun VBA verwendest, dass die Datei mit der Endung .xlsm gespeichert werden muss.

    LG Chrischi
     
    Zuletzt bearbeitet: 2. Juli 2015
    Chrischi305, 2. Juli 2015
    #4
  5. SaarVampire, 9. Juli 2015
    #5
  6. Chrischi305
    Chrischi305 Erfahrener User
    Hallo SaarVampire,

    habe die restlichen Fehler behoben. In den Zellen E3 und F3 konnte nichts angezeigt werden, da in I7 und D35 Formeln hinterlegt sind und diese, anstatt der Werte kopiert werden. Auch das Datum in A3 habe ich abgeändert, da ansonsten in jeder Zeile das aktuelle Datum gestanden hätte. Die Summenformel, unterhalb der Auflistung, wird innerhalb von VBA berechnet und diese trägt das Ergebnis, dann in den Feldern ein.


    Den Anhang Provisionstool.xlsm betrachten

    Lg Chrischi
     
    Chrischi305, 10. Juli 2015
    #6
  7. Ich danke für Deine Unterstützung. Leider funktioniert es immer noch nicht. Am Ende des Makro Überschreibt er auf der Eingabeseite die Formel aus D36 und fügt bei E36 und F36 die Zahl 0 ein. Zu guter letzt fügt er auf dem Eingabeblatt noch eine Zeile ein, somit stimmt das Makro nicht mehr für den nächsten durchlauf. Leider habe ich diese Befehle nicht im VBA gefunden zum korrigieren. Hilfe bei Makro schreiben Excel-Screenshot.jpg
     
    SaarVampire, 13. Juli 2015
    #7
  8. Chrischi305
    Chrischi305 Erfahrener User

    Hilfe bei Makro schreiben

    Hallo SaarVampire,

    ich kann leider deine o.g. Probleme nicht nachvollziehen. Der Code, kann nur auf dem Tabellenblatt "Gesamtübersicht" arbeiteten. Nur die Daten aus C38, C40, C5, I7 und D35 werden kopiert, der Rest passiert im Arbeitsblatt "Gesamtübersicht".


    Code:
    Sub Übertrag1()
    Dim ilr&, dlr&
        With ActiveWorkbook.Sheets("Gesamtübersicht")
            Sheets("Vertragsprovision").Range("C38").Copy Destination:=.Range("B3")
            Sheets("Vertragsprovision").Range("C40").Copy Destination:=.Range("C3")
            Sheets("Vertragsprovision").Range("C5").Copy Destination:=.Range("D3")
            Sheets("Vertragsprovision").Range("I7").Copy
            .Range("E3").PasteSpecial (xlPasteValues)
            Sheets("Vertragsprovision").Range("D35").Copy
            .Range("F3").PasteSpecial (xlPasteValues)
            .Range("A3").Value = Date
            
            .Rows("3:3").Select
            Selection.Insert shift:=xlDown
            
            ilr = Cells(Rows.Count, 4).End(xlUp).Row
            dlr = ilr - 1
            
            Cells(ilr, 4).Value = WorksheetFunction.Sum(Range("D4:D" & dlr))
            Cells(ilr, 5).Value = WorksheetFunction.Sum(Range("E4:E" & dlr))
            Cells(ilr, 6).Value = WorksheetFunction.Sum(Range("F4:F" & dlr))
        End With
    End Sub
    Wenn dieser Code verwendet wird, dann wird zumindest bei mir, keine Zeile in Vertragsprovision eingefügt, auch die Formeln bleiben erhalten.

    LG Chrischi

    PS: Kann es sein, dass du den Code dahin abgeändert hast, dass nach Ausführung des Codes wieder auf dem Blatt "Vertragsposition" sein willst? Ich kann mir deine Probleme, nur so erklären, dass du nach ".Range("A3").Value = Date", folgenden Code hast "Sheets("Vertragsprovision").Select". Damit wird alles was unterhalb steht, auf das Blatt "Vertragsprovision" angewendet. So ist zumindest erklärt, warum eine Zeile bei Vertragsprovision eingefügt wird. Ich habe auch zur Sicherheit vor Rows("3:3").Select, einen Punkt gesetzt, sodass bei Gesamtübersicht die Zeile eingefügt wird. Dass in D36 bis F36 als Werte jeweils eine 0 steht, würde sich damit auch erklären, da die Variable "ilr" in der 4. Spalte (Spalte D) die letzte Zeile sucht, welche in Vertragsprovision Zeile 36 bei dir wäre. Dass in D36 das richtige Ergebnis ist, ist reiner Zufall. Solltest du "Sheets("Vertragsprovision").Select" stehen haben, dann ändere den Code bitte, so wie unten. Dort wird erst alles abgearbeitet und danach erst, wechselt das Makro auf das Blatt "Vertragsprovision".

    Code:
    Sub Übertrag1()
    Dim ilr&, dlr&
        With ActiveWorkbook.Sheets("Gesamtübersicht")
            Sheets("Vertragsprovision").Range("C38").Copy Destination:=.Range("B3")
            Sheets("Vertragsprovision").Range("C40").Copy Destination:=.Range("C3")
            Sheets("Vertragsprovision").Range("C5").Copy Destination:=.Range("D3")
            Sheets("Vertragsprovision").Range("I7").Copy
            .Range("E3").PasteSpecial (xlPasteValues)
            Sheets("Vertragsprovision").Range("D35").Copy
            .Range("F3").PasteSpecial (xlPasteValues)
            .Range("A3").Value = Date
            
            .Rows("3:3").Select
            Selection.Insert shift:=xlDown
            
            ilr = Cells(Rows.Count, 4).End(xlUp).Row
            dlr = ilr - 1
            
            Cells(ilr, 4).Value = WorksheetFunction.Sum(Range("D4:D" & dlr))
            Cells(ilr, 5).Value = WorksheetFunction.Sum(Range("E4:E" & dlr))
            Cells(ilr, 6).Value = WorksheetFunction.Sum(Range("F4:F" & dlr))
        End With
    Sheets("Vertragsprovision").Select
    End Sub
     
    Zuletzt bearbeitet: 13. Juli 2015
    Chrischi305, 13. Juli 2015
    #8
Thema:

Hilfe bei Makro schreiben

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

  2. Makro Hilfe

    in Microsoft Excel Hilfe
    Makro Hilfe: Hallo zusammen, ich bin ziemlich neu in Sachen VBA und Makros, daher benötige ich dazu Hilfe. Ich möchte gerne per Makro nur einen gewissen Bereich meines Arbeitsblattes anzeigen lassen. Die...
  3. Benötige sehr variables Makro

    in Microsoft Excel Hilfe
    Benötige sehr variables Makro: Hallo zusammen, Ich benötige Hilfe für ein Makro wo ich nicht weiter komme.... Das Makro muss folgendes „Können“: 1. Seite „Tourenplan“ auswählen 2. Spalte B soll kopiert werden aber nur wenn...
  4. Hilfe ich bekomme mein Makro mit VBA nicht zum laufen :(

    in Microsoft Excel Hilfe
    Hilfe ich bekomme mein Makro mit VBA nicht zum laufen :(: Hallo, ich bin noch ein relativer Neuling mit VBA und habe das folgende Problem: Ich habe eine relativ simple Tabelle erstellt (Name = Eingabe) In einer zweiten Tabelle (Name = Sortiert)...
  5. Excel Wörter nach oben verschieben

    in Microsoft Excel Hilfe
    Excel Wörter nach oben verschieben: Hallo, ich bräuche eure Hilfe, ich möchte die Zahlen die unten zu sehen sind bei Bild 1 in der Spalte D,E,F,G nach oben verschieben, so dass alles in einer Reihe ist wie auf Bild 2 zu sehen ist....
  6. Makro / VBA Hilfe Ausschneiden Kopieren und Löschen

    in Microsoft Excel Hilfe
    Makro / VBA Hilfe Ausschneiden Kopieren und Löschen: Hallo zusammen, ich habe ein Problem mit meinem Makro, dass folgendes erledigen soll: 1. Filter die Spalte E = Datum des Tabellenblatts "Selim" (alle nicht leeren Datensätze) 2. Markiere...
  7. BItte um Hilfe bei Makro Programmierung

    in Microsoft Excel Hilfe
    BItte um Hilfe bei Makro Programmierung: Hallo, ich habe da ein Problem. Bei der Berechnung von LOadcases benötige ich ein Makro. Ich habe 2 excel dateien. Datei 1 (Database)) Hier habe ich alle Loadcases und Ergebnisse. Datei2...
  8. Hilfe bei Makroimplementierung in Access - mit Anleitung im Anhang

    in Microsoft Access Hilfe
    Hilfe bei Makroimplementierung in Access - mit Anleitung im Anhang: [ATTACH][ATTACH][ATTACH][ATTACH][ATTACH][ATTACH][ATTACH] Hallo, ich benötige Hilfe bei der Implementierung einer Makro in meine Access-Datei. Ich sitze seit Stunden an der Aufgabe, die 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