Office: Makro Recorder

Helfe beim Thema Makro Recorder in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Zusammen. Ich arbeite momentan an einem Projekt bei dem ich (für meinen Vater) möglichst alles automatisch regeln lassen will. Deshalb komme... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von N123456789, 30. April 2011.

  1. N123456789 Erfahrener User

    Makro Recorder


    Hallo Zusammen.

    Ich arbeite momentan an einem Projekt bei dem ich (für meinen Vater) möglichst alles automatisch regeln lassen will. Deshalb komme ich um den Makro rekorder nicht drum herum.
    Leider funktioniert meine Vorgehensweise beim Aufnehmen wunderbar. Doch leider geht beim Abspielen GAR nichts mehr.

    Die Anlage ist noch im entstehen und vordergründing möchte ich mich auf die ersten zwei Spreadsheets konzentrieren.


    Problembeschreibung:
    Ich habe meine Verschiedenen Spalten zu einer Liste zusammengefügt. Mein Vater braucht nun 2 bestimmte dinge:

    1) BK-1 C und BK-2 T

    1.1 BK-1 C und BK-2 T müssen gefiltert werden.
    1.2 Über die "custom" filterfunktion müssen in der spalte "I" quartalsmäßig die Grenzen eingegeben werden (z.B. 01.01.2011 u. 31.03.2011)
    1.3 die daraus entstehende Summen Nettozahl soll in das Spreadsheet "quartalsübersicht" gebracht und in die entsprechende Zelle geleitet werden.

    —> soweit kein problem da ich über eine einfache =(sheet blabla, Zelle blabla) ganz einfach meine "Ergebniss" Zeile aus der Tabelle mit der "quartalsübersichts" Zeile im anderen Spreadsheet verknüpfen kann.

    So nun der Hacken!!!

    2) BK-3 Tmw. (hundling)

    wenn ich nun meine Filtereinstellung die sich auf das quartal bezieht beibehalte und nur meinen Buchungskreis Filter ändere (sodass mir NUR BK-3 Tmw. angezeigt wird) ändert sich somit ja auch wieder meine "Ergebnisszeile" Und das Ergebniss dass ich aus der Filterung in 1) gewonnen habe, geht ja wieder verloren.

    Mein Ziel:

    Ist es möglich, 2 Makros zu basteln, welche zuerst alle bisherigen Filter aufheben und dann in meine gezielte Filtereinstellung reingehen, und dann das Ergebnis in einer Bestimmten nicht verändernden Zeile ausgeben?

    genauer:

    Ich würde gerne 2 Makros anlegen.

    Verlauf des ersten Makros:
    1.1 Aufhebung aller bisherigen Filtereinstellungen
    1.2 Filterung Quartalsspezifisch. und ich möchte das sich zwei Inputbox'en öffnen die mich die Quartalsgrenzen eingeben lassen.
    1.3 Filterung auf BK-1 C und BK-2 T
    1.4 (Teilergebnis) Wert Aus Ergebniszeile Statisch in die "Quartalsübersicht" übernehmen

    Verlauf des zweiten Makros:
    1.1 Aufhebung aller bisherigen Filtereinstellungen
    1.2 Filterung Quartalsspezifisch. und ich möchte das sich zwei Inputbox'en öffnen die mich die Quartalsgrenzen eingeben lassen.
    1.3 Filterung auf BK-3 Tmw.
    1.4 (Teilergebnis) Wert Aus Ergebniszeile Statisch in die "Quartalsübersicht" übernehmen

    Sollte alles in ein Makro passen bin ich natürlich auch nicht abgeneigt :)
    Es wäre so super wenn ein Excel Makro Spezialist mir zur Hand gehen würde.

     
    N123456789, 30. April 2011
    #1
  2. Exl121150 Erfahrener User
    Hallo!

    Warum denn mit VBA lösen oder mit einem temporären Filter?
    Es geht ja auch mit den Excel-Arbeitsblattfunktionen, auch wenn es sich um Excel2003 und nicht um Excel2007 handelt.

    Arbeitsblatt mit dem Namen 'Quartalsübersicht'
     FGHIJ
    28103,73 €    
    29     
    30 Zahlungseingang   
    31 VonBisBuchungskreisBuchungskreis
    32522,00 €01.01.201120.05.2011BK-1 CBK-2 T
    33     
    34     
    35     
    361.000,00 €    
    37     
    38     
    39 Zahlungseingang   
    40 VonBisBuchungskreis 
    41400,00 €01.01.201120.05.2011BK-3 Tmw 
    42     
    ZelleFormel
    F28=Datenbank!F51
    F32=SUMMENPRODUKT(((Datenbank!$A$5:$A$50=I32)+(Datenbank!$A$5:$A$50=J32))*(G32<=Datenbank!$I$5:$I$50)*(Datenbank!$I$5:$I$50<=H32)*Datenbank!$G$5:$G$50)
    F36=Datenbank!H51
    F41=SUMMENPRODUKT((Datenbank!$A$5:$A$50=I41)*(G41<=Datenbank!$I$5:$I$50)*(Datenbank!$I$5:$I$50<=H41)*Datenbank!$G$5:$G$50)
    G41=G32
    H41=H32

    Im Arbeitsblatt 'Quartalsübersicht' habe ich in den beiden Zellen F32 und F41 zwei Musterfunktionen eingebaut, die mittels der rechts daneben stehenden Vorgaben die gewünschten Abfragen im Arbeitsblatt 'Datenbank' durchführen.
     
    Zuletzt von einem Moderator bearbeitet: 30. November 2020
    Exl121150, 1. Mai 2011
    #2
  3. N123456789 Erfahrener User
    passt danke!

    ich arbeite momentan noch an einem anderen projekt das ähnlich zu diesem ist.
    da geht es darum in einem Makro eine "inputbox" aufzurufen bei der man an einer Stelle ein Datum eingeben kann.
    das war auch der Hauptasuschalg warum ich meinem Vater hier helfen wollte.
    Mein chef mag die filterfunktionen die es gibt eigentlich gar nicht. er sucht bei den "benuzerdefinierten" filtern immer die falschen dinge raus. also habe ich ihm da ein wunderbares makro aufgenommen. dass auch wunderbar funktioniert. Sahnehäupchen ist nun eben eine "inputbox" aufzurufen deren eingabe das makro automatisch weiterlaufen lässt.
    Ich brauche einfach nur die allgemeine Syntax eine inputbox aufzurufen. und evtl. die Variablen deklaration damit die eingabe als datum anerkannt wird.

    :)

    danke an Exl121150. dein Tipp funktioniert und mein dad mag es. wenn noch meine zweite anfrage beantwortet werden könnte wäre ich unendlich glücklich :)

    vielen dank schonmal

    Gruß
    Nico
     
    N123456789, 2. Mai 2011
    #3
  4. miriki Erfahrener User

    Makro Recorder

    Code:
    Option Explicit
    
    Private Sub CommandButton1_Click()
    
        Dim d As Date
    
        d = InputBox("Bitte ein beliebiges Datum eingeben", "Datums-Eingabe", Int(Now()))
    
        If d <> 0 Then
            MsgBox d
        End If
    
    End Sub
    Gruß, Michael
     
    miriki, 3. Mai 2011
    #4
  5. N123456789 Erfahrener User
    ok danke ich versuchs gleich wenn ich zuhause bin. Kann der Wert der in der Input box eingegen wird, auch an 2 stellen gleichzeitig eingesetzt werden?

    z.b. einmal an der gewünschten filter stelle
    und z.b. Zelle XY Sheet XY?
     
    N123456789, 3. Mai 2011
    #5
  6. miriki Erfahrener User
    Was Du mit dem Wert in der Variablen "d" machst, ist Dir völlig selbst überlassen. Im Beispiel wird er nur noch per Messagebox ausgegeben, aber Du kannst ihn natürlich auch in jede beliebige Zelle schreiben.

    Code:
    thisworkbook.worksheets("blattname").cells(zeile,spalte).value = d
    wäre da Dein Freund, wobei sich das je nach Situation auch noch kürzen läßt, indem wahrscheinlich zumindest "thisworkbook." weggelassen werden kann. Und wenn "blattname" auch gerade das aktive Tabellenblatt ist, kann "worksheets("blattname")." auch noch weggelassen werden. Und für Mutige ;-) : Das ".value" kann man auch noch weglassen...
    Code:
    cells(zeile,spalte) = d
    Gruß, Michael
     
    miriki, 3. Mai 2011
    #6
  7. N123456789 Erfahrener User
    ok sobald ich wieder an nem Windows rechner bin werde ich es gleich kopieren.

    Michael du rettest meine Tage :) vielen Dank für deine Hilfe.
     
    N123456789, 3. Mai 2011
    #7
  8. N123456789 Erfahrener User

    Makro Recorder

    Hallo,

    also es funktioniert nicht ganz. wie rufe ich meine variabe "d" wieder auf?
    ich hatte schonmal was mit makros zu tun. ich glaube da ging es über den begriff "call" aber hier ging das nicht so.

    mein filter sagt:

    Criteria1:=">=d"

    natürlich auch Analog für Criteria2.

    ich hab es auch mit:

    Criteria1:=">= call d"

    versucht klappt aber auch nicht.
    Hat einer eine Idee oder kann mir mal wieder meine Unfähigkeit aufzeigen :)

    thisworkbook.worksheets("blattname").cells(zeile,spalte).value = d

    ging bei mir nach eingabe der Saten auch nicht. Liegt das daran dass in meinem Ablauf etwas nicht stimmt?

    viele Grüße Nico
     
    N123456789, 4. Mai 2011
    #8
  9. N123456789 Erfahrener User
    keiner ne idee? also irgendwie check ich es echt nicht. mittlerweile geht urplötzlich das verweisen des Datums mit dem Aufruf:
    thisworkbook.worksheets("blattname").cells(zeile,spalte).value = d
    aber einsetzten tut er meine ober und untergrenze trotzdem nicht. ich kopier mal alles der übersichtlichkeit halber.

    Code:
    Sub Komplett()
    
        ' Deklaration und Definition
      
        Dim d As Date
        d = InputBox("Bitte ein beliebiges Datum eingeben", "Datums-Eingabe", Int(Now()))
        If d <> 0 Then
            MsgBox d
        End If
        
        Dim e As Date
         e = InputBox("Bitte ein beliebiges Datum eingeben", "Datums-Eingabe", Int(Now()))
        If e <> 0 Then
            MsgBox e
        End If
      
        ' Quartalsfilter
        
        Selection.AutoFilter Field:=9, Criteria1:=">= d", Operator:=xlAnd _
            , Criteria2:="<= e"
            
        ' Zellverweis
        
        Worksheets("Quartalsübersicht").Cells(21, 3).Value = d
        Worksheets("Quartalsübersicht").Cells(21, 6).Value = e
        
        ' Buchungskreisfilter
        
    Range("A4").Select
        Selection.AutoFilter Field:=1
    
        Range("A4").Select
        Selection.AutoFilter Field:=1, Criteria1:="=BK-1 C", Operator:=xlOr, _
            Criteria2:="=BK-2 T"
        Sheets("Quartalsübersicht").Select
        
        
    End Sub
     
    N123456789, 4. Mai 2011
    #9
  10. N123456789 Erfahrener User
    hat keiner einen kleinen Tipp? :)
     
    N123456789, 5. Mai 2011
    #10
  11. Exl121150 Erfahrener User
    Hallo!

    Das Problem, warum Excel auf das Makro zur Filterung der Sätze im Arbeitsblatt 'Datenbank' keine (befriedigende) Reaktion zeigt, liegt im folgenden Makroabschnitt:

    Hier hast Du zB. als 1. Kriterium
    Criteria1:=">=d"
    Damit wird das 9. Feld mit der Konstanten d verglichen, ob die Inhalte dieser Spalte größer oder gleich zu dieser Konstanten d sind, was immer diese Konstante auch bedeuten soll.
    Tatsächlich soll aber die 9. Spalte mit dem Konstantenwert, der sich in der Variablen d befindet, verglichen werden. Um dies zu erreichen, muss man diesen Wert zu einem Teil der Textkonstanten, die für Criteria1 benötigt wird, machen und zwar so:
    Criteria1:=">=" & CLNG(d)
    Mit der CLNG-Funktion wandelst Du den Inhalt von Variable d (die eine fortlaufende Tageszahl enthält) um in eine Textkonstante. Das &-Zeichen kettet dann diese Textkonstantenzahl an die davorstehende Zeichenkette ">=".
    Zur Verdeutlichung ein konkretes Beispiel:
    Du gibst in Deiner 1. Inputbox Folgendes
    24.4.2011
    als Futter für die Variable d ein. In Wahrheit wird in dieser Variablen die fortlaufende Tageszahl 40657 als Zahl gespeichert, denn das ist die intern gespeichert Zahl für dieses Datum. Die Angabe ">=" & CLNG(d) erstellt nun folgende Zeichenfolgekonstante:
    ">= 40657" für Criteria1.

    Analog für Criteria2:
    Criteria2:="<=" & CLNG(e)

    Mit diesen beiden Änderungen im Makro müsstest Du die gewünschte Filterung erreichen - unter der Voraussetzung, dass der Listenbereich ab Zelle A4 vor dem Makrostart irgendwie selektiert/markiert wurde, da Du für Selection bis zu diesem Aufruf im Makro keine Angabe gemacht hast.
     
    Exl121150, 5. Mai 2011
    #11
  12. N123456789 Erfahrener User
    Wow danke für die umfangreiche ERklärung. So lichtet sich der Dunkle und böse makrowald auf einmal auf. Super, total einfach und verständlich rüber gebracht.
    Sobald ich wieder an einen Windows rechner komme werde ich das gleich versuchen.

    Aber da du das markierungsproblem gleich ansprichst, wie müsste dann meine Befehlszeile lauten dass die liste wie sie ist gleich automatisch markiert wird?

    geht das mit:

    Code:
    select.sheet("Datenbank")$A$4:I$500
    ist das richtig?
     
    N123456789, 5. Mai 2011
    #12
  13. Exl121150 Erfahrener User

    Makro Recorder

    Hallo!

    Genau genommen würde Folgendes bereits ausreichen:
    RANGE("A4").Autofilter Field:=9, Criteria1:=">=" & CLNG(d), xlOperation:=xlAnd, Criteria2:="<=" & CLNG(e)
    Durch die Angabe von RANGE("A4") wird zwar zuerst nur die Zelle A4 des aktiven Arbeitsblattes ausgewählt. Die Methode Autofilter erweitert aber diesen angegebenen Zellbereich auf einen rechteckigen Bereich soweit, als ein zusammenhängender Rechteckbereich, der in jeder Zeile und Spalte mindestens einen Wert enthält, nur mehr von Zellen umgeben ist, die keine Werte mehr enthalten.
    Das heißt, sobald in Deinem Datenbank-Bereich A4:N51 nur eine einzige Leerzeile enthalten ist, bricht bei dieser Leerzeile der Filterbereich ab.
    Um den ganzen Bereich A4:N50 der Filterung zu unterwerfen, muss so programmiert werden:
    Range("A4:N50").Autofilter .... usw.
    Soll aber auch das Arbeitsblatt (in diesem Fall 'Datenbank', weil es offensichtlich als das aktive vorausgesetzt wurde) auch noch festgelegt werden, dann müsste das Ganze wie folgt lauten:
    Worksheets("Datenbank").Range("A4:N50").Autofilter Field:=9, ... usw.

    Was mir schlussendlich auch noch aufgefallen ist: Kann es sein, dass Du in den Arbeitslättern das 1904-Datumsystem eingestellt hast?
    Dann allerdings musst Du damit rechnen, dass Du mit der direkten Datumseingabe in VBA über die beiden Inputboxen Probleme bekommen wirst. Denn VBA ist - ab dem 1.3.1900 - nur mit dem 1900-System kompatibel. Um die Differenz an Tagen, um die VBA den Nullpunkt seines Datumssystems früher setzt, auszugleichen, musst Du von den eingegebenen Variablenwerten d und e jeweils noch 1462 subtrahieren, um auf die korrekten Datumswerte des 1904-er Systems in den Arbeitsblättern zu kommen.

    Weiters möchte ich darauf hinweisen, dass Du unmittelbar nach den vorgenannten Filterkriterien noch ein weiteres Filterkriterium mit der 1. Spalte (Field:=1) aufbaust - d.h. am Ende des Makros bestehen somit beide Filterungen gleichzeitig (und nicht etwa getrennt voneinander).

    Code:
    Sub Komplett()
    
        ' Deklaration und Definition
      
        Dim d As Date
        Dim e As Date
        
        d = InputBox("Bitte ein beliebiges Datum eingeben", _
                     "Datums-Eingabe", Int(Now()))
        If d <> 0 Then
            MsgBox d
        End If
        
         e = InputBox("Bitte ein beliebiges Datum eingeben", _
                      "Datums-Eingabe", Int(Now()))
        If e <> 0 Then
            MsgBox e
        End If
        
        ' Korrekturrechnung: 1900->1904-Datumssystem
        d = d - 1462
        e = e - 1462
      
        ' Quartalsfilter
        Worksheets("Datenbank").Range("A4:N50").AutoFilter Field:=9, _
            Criteria1:=">=" & CLng(d), Operator:=xlAnd, _
            Criteria2:="<=" & CLng(e)
            
        ' Zellverweis
        
        Worksheets("Quartalsübersicht").Cells(21, 3).Value = d
        Worksheets("Quartalsübersicht").Cells(21, 6).Value = e
        
        ' Buchungskreisfilter
        
    
        Worksheets("Datenbank").Range("A4:N50").AutoFilter Field:=1, _
            Criteria1:="=BK-1 C", Operator:=xlOr, _
            Criteria2:="=BK-2 T"
            
            
        Sheets("Quartalsübersicht").Select
        
        
    End Sub
    
     
    Exl121150, 5. Mai 2011
    #13
  14. N123456789 Erfahrener User
    einfach nur zur Rückmeldung. All deine Vorschläge haben super funktioniert ich bin über's wochenende bei meinem Vater und stelle die Datei gerade fertig.

    für zukünftige projekte gibt es aber noch eins.
    (ich habe es selber gelöst aber ich wollte noch bescheid geben)

    hat nicht ganz funktioniert. ich musste d + 1 machen.

    Dennoch vielen vielen dank für die Tolle Hilfe inkl den Erklärungen. Hat viel geholfen.
    Schönes WE Gruß Nico
     
    N123456789, 13. Mai 2011
    #14
Thema:

Makro Recorder

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

  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. Leerzeilen entfernen

    in Microsoft Word Hilfe
    Leerzeilen entfernen: Hallo in die Runde, ich habe das Problem bzw. den Wunsch in einem DOC die Leerzeilen zu entfernen und das per Makro. Allerdings gelingt es nicht Hintergrund das DOC wird aus einer Dot-Datei...
  6. Makro Schaltflaechen vervielfaeltigen sich....

    in Microsoft Excel Hilfe
    Makro Schaltflaechen vervielfaeltigen sich....: Hallo Zusammen, ich habe eine Exceldatei, die seit ein paar Wochen sehr langsam zu öffnen und zu bearbeiten ist. Zuvor war sie ca. 8MB gross, was sich verdoppelt hat. Ich habe alle Zellen die...
  7. Seit Win 11 Zugriffsprobleme bei Excel über Makros

    in Microsoft Excel Hilfe
    Seit Win 11 Zugriffsprobleme bei Excel über Makros: Guten Tag! Ich habe vor einer Woche mein Windows 10 auf Windows 11 geupgraded, und seitdem habe ich extreme Schwierigkeiten mit meinem Excel. Mit Windows 10 funktionierte alles so, wie es sollte,...
  8. VBA-Makro zur Zellenformatierung Syntax probleme

    in Microsoft Excel Hilfe
    VBA-Makro zur Zellenformatierung Syntax probleme: Hallo zusammen, ich möchte per Makro Zellen formatieren. Tausender-Trennzeichen 3 Nachkommastellen Positive Zahlen Schwarz Negative Zahlen Rot Nullwert mit - Hinter der Zahl soll noch eine...
  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