Office: Zwei Macros zusammenfügen

Helfe beim Thema Zwei Macros zusammenfügen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe 2 Makros die einwandfrei funktionieren. Jetzt mochte ich das Macro Kopieren im das Macro SPEICHERN einfügen Sodas beim... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von samare, 20. Dezember 2020.

  1. samare User

    Zwei Macros zusammenfügen


    Hallo zusammen,
    ich habe 2 Makros die einwandfrei funktionieren. Jetzt mochte ich das Macro Kopieren im das Macro SPEICHERN einfügen Sodas beim Speichern auch die Kopierfunktion ausgeführt wird. Diesmal soll allerdings nur der Treffer aus der Combobox in das entsprechende Tabellenblatt eingefügt werden und nicht in alle.
    Hier die Macros:
    Speichern:

    Private Sub CB_Speichern_Click()

    'Geänderte Einträge speichern
    Dim i As Integer
    Dim Preis As Single
    Dim EuroPreis As Single
    i = TrefferZeile(Me)


    Cells(i, 4).Value = Me.TextBoxName.Text
    Cells(i, 5).Value = Me.TextBoxVorname.Text
    Cells(i, 6).Value = Me.TextBoxStraße.Text
    Cells(i, 7).Value = Me.TextBoxPlz.Text
    Cells(i, 8).Value = Me.TextBoxOrt.Text
    Cells(i, 9).Value = Me.TextBoxGeburtsdatum.Text
    Cells(i, 10).Value = Me.TextBoxEmail.Text
    Cells(i, 11).Value = Me.TextBoxKrankenkasse.Text
    Cells(i, 12).Value = Me.TextBoxSteuerID.Text
    Cells(i, 13).Value = Me.TextBoxSozialversicherungsNr.Text
    Cells(i, 14).Value = Me.TextBoxEintritt.Text
    Cells(i, 15).Value = Me.TextBoxDatumEingruppierung.Text
    Cells(i, 16).Value = Me.TextBoxTarifvertrag.Text
    Cells(i, 17).Value = Me.TextBoxEingruppierung.Text
    Cells(i, 18).Value = Me.TextBoxElternzeit.Text
    Cells(i, 19).Value = Me.TextBoxMutterschutz.Text
    Cells(i, 20).Value = Me.TextBoxAustritt.Text
    Cells(i, 21).Value = Me.TextBoxVBLU.Text
    Cells(i, 22).Value = Me.TextBoxWochenarbeitszeitgesamt.Text
    Cells(i, 23).Value = Me.TextBoxGrundschule.Text
    Cells(i, 24).Value = Me.TextBoxMädchen.Text
    Cells(i, 25).Value = Me.TextBoxStadtteil_in_Bewegung.Text
    Cells(i, 26).Value = Me.TextBoxCasa.Text
    Cells(i, 27).Value = Me.TextBoxJugend.Text
    Cells(i, 28).Value = Me.TextBoxKiez.Text
    Cells(i, 29).Value = Me.TextBoxFamilienzentrum.Text
    Cells(i, 30).Value = Me.TextBoxMitarbeitergespräche.Text
    Cells(i, 31).Value = Me.TextBoxDatenschutz_Ja_Nein.Text
    Cells(i, 32).Value = Me.TextBoxDatenschutzerklärung_Datum.Text
    Cells(i, 33).Value = Me.TextBoxBeschäftigungsverhältnis.Text
    Cells(i, 34).Value = Me.TextBoxMiniJobEntgelt.Text
    Cells(i, 35).Value = Me.TextBoxElternbildungsangebote.Text
    Cells(i, 36).Value = Me.TextBoxSaLe.Text
    Cells(i, 37).Value = Me.TextBoxCasaimGrünen.Text
    Cells(i, 38).Value = Me.TextBoxRentenbefreiung.Text
    If Me.OB_Mann = True Then Cells(i, 39).Value = "Männlich"
    If Me.OB_Frau = True Then Cells(i, 39).Value = "Weiblich"


    'Format zuweisen
    Cells(i, 34).NumberFormat = "#,##0.00 €"


    'Zum Hauptmenu zurück


    End Sub
    Macros Kopieren:

    Private Sub CB_MaKopieren_Click()
    Dim arrNamen()
    Dim lngZaehler As Long
    Dim Suchwert As Range
    Dim lngLetzte As Long
    arrNamen = Array("Fischer", "Groß", "Jäger", "Müller", "Schmitt") '<== hier alle Namen eintragen
    For lngZaehler = 0 To UBound(arrNamen())
    With Worksheets(arrNamen(lngZaehler))
    lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
    Set Suchwert = Worksheets("Personal").Range("D9:D200").Find(arrNamen(lngZaehler))
    If Suchwert Is Nothing Then
    MsgBox "Wert " & arrNamen(lngZaehler) & " nicht gefunden!"
    Else
    Suchwert.EntireRow.Copy .Cells(lngLetzte + 1, 1)
    End If
    End With
    Next lngZaehler
    End Sub

    Hoffe mir da jemand helfen.
    Gruß
    samare
     
  2. Hajo_Zi
    Hajo_Zi Erfahrener User
    Zu Deiner Datei kann ich nichts schreiben, was wohl daran liegt das ich nicht auf fremde Rechner schaue. Ich baue keine Datei nach.

    Sollte die Datei verlinkt werden?

    Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Muster*, Test*, Mappe*, Beispiel*, Fehler*, Kalender*, UserForm* usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.

    Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.

    Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.

    Bilder statt Datei | Excel ist sexy!

    Es sollte ein aussagekräftiger Name sein.

    Das ist nur meine Meinung zu dem Thema.

    Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
    Hinweis - Anonymisierung und Pseudonymisierung von Beispielmappen - MS-Office-Forum
    ändern.

    Das ist nur meine Meinung zu dem Thema.

    Zwei Macros zusammenfügen GrußformelZwei Macros zusammenfügen Homepage
     
  3. Beverly
    Beverly Erfahrener User
    Hi,

    rufe doch einfach am Ende (oder Anfang) deines Codes das andere Makro auf:

    Code:
        Call CB_MaKopieren_Click
    


    Zwei Macros zusammenfügen GrußformelZwei Macros zusammenfügen Beverly's Excel - Inn
     
  4. samare User

    Zwei Macros zusammenfügen

    Hallo Beverly,
    das funktioniert:)
    Ich möchte allerdings nur der Treffer aus der Combobox kopiert wird.
    Dafür muss ich irgendwie beim Kopieren "Dim arrNamen()" umschreiben und blicke ich nicht durch
     
  5. Beverly
    Beverly Erfahrener User
    Hi,

    sorry, aber irgendwie verstehe ich nicht was du machen willst - wenn es sich nur um den Inhalt einer ComboBox handelt, dann brauchst du das Makro doch überhaupt nicht, weil dazu keine For-Next-Schleife notwendig ist wie bei dem Array, bei dem alle Feldinhalte durchlaufen werden müssen. Den Inhalt eine ComboBox anzusprechen geht ganz einfach mit CombBox.Value



    Zwei Macros zusammenfügen GrußformelZwei Macros zusammenfügen Beverly's Excel - Inn
     
  6. Exl121150 Erfahrener User
    Hallo,

    ich nehme an, dass der VBA-Code lauten müsste wie folgt

    Code:
    Private Sub CB_MaKopieren_Click()
        Dim arrNamen()
        Dim lngZaehler As Long
        Dim Suchwert As Range
        Dim lngLetzte As Long
      
        'Aufzählung der Arbeitsblätter:
        arrNamen = Array(Me.CB_MaKopieren.Value) '<== hier nur den Wert der Combobox-Auswahl eintragen
        For lngZaehler = 0 To UBound(arrNamen())
          With Worksheets(arrNamen(lngZaehler))
            lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
            Set Suchwert = Worksheets("Personal").Range("D9:D200").Find(arrNamen(lngZaehler))
            If Suchwert Is Nothing Then
              MsgBox "Wert " & arrNamen(lngZaehler) & " nicht gefunden!"
            Else
              Suchwert.EntireRow.Copy .Cells(lngLetzte + 1, 1)
            End If
          End With
        Next lngZaehler
      
    End Sub
    
     
    Exl121150, 20. Dezember 2020
    #6
  7. Beverly
    Beverly Erfahrener User
    Hi,

    oder meinst du, dass du anstelle des fest vorgegebenen Arrays alle Werte der ComboBox übertragen willst? Dann übergib einfach die Werte der ComboBox in ein Array und der REst des Codes kann dann so bleiben.

    Anstelle
    Code:
    arrNamen = Array("Fischer", "Groß", "Jäger", "Müller", "Schmitt")
    einfach
    Code:
    arrNamen = ComboBox.List


    Zwei Macros zusammenfügen GrußformelZwei Macros zusammenfügen Beverly's Excel - Inn
     
  8. samare User

    Zwei Macros zusammenfügen

    ok??
    Also vielleicht hilft das noch.
    Beim Macro speichern wird alles im Tabellenblatt "Personal" gespeichert.
    Bei Kopieren wird aus dem Tabellenblatt "Personal" die Daten in die Tabellenblätter der Personen kopiert die Array stehen.

    Jetzt möchte ich das aus meinem Comandbutton "speichern" auch der Kopiervorgang für die gefundene Person in das Tabellenblatt mit dem gleichen Namen kopiert wird.
    Hoffe mich jetzt besser ausgedrückt zu haben
    Gruß
    samare
     
  9. Beverly
    Beverly Erfahrener User
    Also wenn die Daten, die du mittels des Makros CB_Speichern_Click() in das aktive Tabellenblatt kopierst noch zusätzlich in das Tabellenblatt der betreffenden Person übertragen willst, musst du doch nur denselben Code noch einmal verwenden, dabei die benötigte Zeile festlegen (ich kenne deinen Tabellenaufbau nicht und weiß nicht wo die Daten hin sollen) und alles mittels With-Anweisung auf das betreffende Tabellenblatt beziehen - also nach diesem Prinzip:

    Code:
    With Worksheets("Person")
         i = Zeilennummer
        .Cells(i, 4).Value = Me.TextBoxName.Text
        .Cells(i, 5).Value = Me.TextBoxVorname.Text
        .Cells(i, 6).Value = Me.TextBoxStraße.Text
        .Cells(i, 7).Value = Me.TextBoxPlz.Text
        .Cells(i, 8).Value = Me.TextBoxOrt.Text
    
       '*** usw.
    
    End With


    Zwei Macros zusammenfügen GrußformelZwei Macros zusammenfügen Beverly's Excel - Inn
     
  10. Exl121150 Erfahrener User
    Hallo,

    war mein Vorschlag, den ich im Posting #6 gemacht habe, nicht zielführend?

    Dort wird die Auswahl aus der Combobox "CB_MaKopieren" genommen und mit dem einen ausgewählten Namen das Array "arrNamen" befüllt, sodass im Makro "CB_MaKopieren_Click()" nur der Satz für diese eine ausgewählte Person vom Arbeitsblatt "Personal" hinüberkopiert wird ins Arbeitsblatt dieser Person.

    Warum im ursprünglichen Makro "CB_MaKopieren_Click()", das ja infolge des Klickens auf die Kombobox "CB_MaKopieren" ausgeführt wird, im Array "arrNamen" eine ganze Personenliste steht und nicht die eine in der Kombobox ausgewählte Person, das ist mir bis jetzt völlig unklar -- denn dadurch wird ja die Kombobox bzw. die Kombobox-Auswahl überflüssig und damit sinnlos.
     
    Exl121150, 21. Dezember 2020
    #10
  11. samare User
    Hallo,
    ok ist für einen Anfänger der sich alles aus Büchern und Internet zusammengebastelt hat zuviel des guten.
    Vielen Dank für eure Unterstützung
    Gruß
    samare
     
  12. Beverly
    Beverly Erfahrener User
    Hi,

    weshalb denn gleich aufgeben? Was genau hast du denn an meinem Vorschlag mit der With-Anweisung nicht verstanden?
    Wenn du außerdem eine Beispielmappe hochladen würdest, wäre das Helfen wesentlich einfacher, weil man dann nicht versuchen müsste, sich alles irgendwie zusammenreimen zu müssen, was logischerweise zu Missverständnissen führt.


    Zwei Macros zusammenfügen GrußformelZwei Macros zusammenfügen Beverly's Excel - Inn
     
  13. samare User

    Zwei Macros zusammenfügen

    ok schreibe die Datei um so das keine Personenbezogenendaten zu erkennen sind.
     
  14. samare User
    so hoffe das es klappt. BN admin PW admin123.
    in der Userform verwalten habe ich die CB speichern und kopieren. das kopieren ist dafür das man den verlauf der Person sehen kann. unter speichern wird im Tabellenblatt "Personal" die aktuellen Daten gespeichert. Jetzt möchte ich das beim speichern auch der Kopiervorgang gestartet wird. allerdings nur für die Person die über suchen gefunden wurde.
    Hoffe das es verständlich ist.
     
  15. Beverly
    Beverly Erfahrener User
    Wenn ich das richtig verstanden habe sollen die Daten in die erste freie Zeile auf dem Tabellenblatt des Mitarbeiters eingetragen werden, dessen Name in der TextBox "TextBoxName" steht?

    Beide Tabellenblätter sind ja identisch aufgebaut - deshalb musst du einfach nur die neu in Tabelle "Personal" eignetragene Zeile in das betreffende Tabellenblatt in die erste freie Zeile kopieren - ergänze diesen Code am Ende deiner Prozedur (ungetestet):

    Code:
        Dim lngLetzte As Long
        Dim rngBereich As Range
        With Worksheets("Personal")
            Set rngBereich = .Range(.Cells(i, 3), .Cells(i, 40))
        End With
        With Worksheets(TextBoxName)
            lngLetzte = IIf(IsEmpty(.Cells(Rows.Count, 3)), .Cells(Rows.Count, 3).End(xlUp).Row, Rows.Count)
            rngBereich.Copy .Cells(lngLetzte + 1, 3)
        End With
    


    Zwei Macros zusammenfügen GrußformelZwei Macros zusammenfügen Beverly's Excel - Inn
     
Thema:

Zwei Macros zusammenfügen

Die Seite wird geladen...
  1. Zwei Macros zusammenfügen - Similar Threads - Macros zusammenfügen

  2. Daten aus einer anderen excel Datei aktualisieren nach Schlüsselfeld Macros?

    in Microsoft Excel Hilfe
    Daten aus einer anderen excel Datei aktualisieren nach Schlüsselfeld Macros?: Hallo, ich habe ein grosses Problem, ich habe eine Tabelle "Nicht bezahlte Bestellungen", die ich wöchentlich mit den Daten aus einer anderen neunen Tabelle aktualisieren möchte. Meine...
  3. Mit Macros erzeugte Töne werden plötzlich nicht mehr abgespielt

    in Microsoft Excel Hilfe
    Mit Macros erzeugte Töne werden plötzlich nicht mehr abgespielt: Hallo, ohne ersichtlichen Grund werden Töne aus Macros heraus nicht mehr abgespielt. Beispiel: "Declare Function Beep Lib "kernel32.dll" (ByVal dwFreq As Long, ByVal dwDuration As Long) As...
  4. Formatierung mit Macros

    in Microsoft Excel Hilfe
    Formatierung mit Macros: Hallo, ich hab mal wieder eine Herausforderung und da ich blutiger Anfänger bin was Macros angeht benötige ich eure Hilfe. Ich bekomm jeden Donnerstag eine xml als Export aus einem Programm....
  5. Alte Macros verwenden - Pfadprobleme

    in Microsoft Excel Hilfe
    Alte Macros verwenden - Pfadprobleme: Ich habe eine ältere Macro-Sammlung "geerbt", die wohl noch unter Excel 97 gebaut wurde. Die Macros sind in eigenen Exceltabellen geschrieben, auf die von einer zentralen Datei verwiesen wird....
  6. Hilfe bei erstellung eines Macros für ein Drop Down Menu´s

    in Microsoft Excel Hilfe
    Hilfe bei erstellung eines Macros für ein Drop Down Menu´s: Hallo, ich hoffe ihr könnt mir bei meiner Frage weiterhelfen. Ich habe im Forum folgendes Macro gefunden was ich für mein Vorhaben sehr gut einsetzten kann! Danke! Ganz große Klasse das...
  7. letztmaliges ausführen eines macros zeitlich dokumentieren

    in Microsoft Excel Hilfe
    letztmaliges ausführen eines macros zeitlich dokumentieren: hallo :) schon wieder eine frage :) nur mal so ne idee, will nur wissen ob sie funktioniert: wenn ich das letztmalige ausführen eines makros dokumentieren möchte, d.h. in einer bestimmten...
  8. Macros, Objecte & co im Word 2007

    in Microsoft Word Hilfe
    Macros, Objecte & co im Word 2007: Hallo! Ein paar Fragen habe ich zum Word2007. Mit 2003 habe ich schon einfache Berechnungs-Macros erstellt. Allerdings finde ich im Word2007 nicht einmal die Schaltflächen, mit denen man...