Wichtig für Praktikums Projekt

  • Excel

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von DenizEmin.

    Wichtig für Praktikums Projekt

    Hallo Leute,

    bin neu hier und nach etlichen Suchen kam ich zu dem Entschluß das zu Posten. Bin fast am verzweifeln und wäre froh wenn Ihr mir helfen könntet.

    Also ich hab in Excel mehrere Register der eine heißt Mitarbeiter und der andere Stationen. Nun will ich das ein Button mir von Register Mitarbeiter A2:A693 ins Register Stationen A2:A693 kopiert.

    Ich denk für Euch ist es einfach aber ich hab leider keine Erfahrung in VBA und danke Euch für Hilfe und hoffentliche ohne Niedermachende Sprüche :wacko: !

    Gruß Deniz

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Hi picoflop,

    arbeite direkt in Excel mit VBA. Hab auch mittlerweilen rausgefunden was ich brauch :-).

    Was mich zu meinem nächsten Problem bringt. Hier erst mal mein Code:

    Sub Schaltfläche10_Klicken()
    Dim summary As String
    Worksheets("Mitarbeiter").Range("A2:A2000").Copy Destination:=Worksheets("Stationen").Range("A2")
    Worksheets("Mitarbeiter").Range("F2:F2000").Copy Destination:=Worksheets("Stationen").Range("B2")
    Worksheets("Mitarbeiter").Range("D2: D2000").Copy Destination:=Worksheets("Stationen").Range("C2")
    Worksheets("Mitarbeiter").Range("E2:E2000").Copy Destination:=Worksheets("Stationen").Range("D2")
    Worksheets("Mitarbeiter").Range("G2:G2000").Copy Destination:=Worksheets("Stationen").Range("E2")
    End Sub

    Wie schaff ich es das falls was in einer Zeile von "Station" drinsteht er es nicht überschreibt, sondern die nächste leere Zeile hernimmt? Such und google aber die Sachen die ich find kann ich auch nach zick einbau versuchen nicht zum laufen bringen.

    Müßt doch möglich sein, in jeder Zeile eine wenn dann Funktion einzubauen, die dann in einer Schleife läuft, bis es funkt!? Oder lieg ich voll falsch. Hoff ihr blickt noch durch ;)

    Danke und Gruß Deniz :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DenizEmin“ ()

    Ich habe keine Ahnung wie du die Zellen durchgehst (Denke mit einer Schleife) is ja auch egal.
    Mach einfach eine If abfrage bevor du kopiert.

    Visual Basic-Quellcode

    1. If Cells(X, Y) = "XXX" Then
    2. MsgBox "Hier kann kopiert werden"
    3. End If


    Boha wie lange ist VBA schon her :D
    Hi Eistee,

    danke erst mal für Deine Mühe :)

    So wie ich jetzt seh (weil bei mir das irgendwie nicht funkt, müßt ne MsgBox einfügen), soll bei Deinem Code ne Meldung kommen ab wo kopiert werden kann. Aber das soll ja Automatisch gehen, ohne das er mir was anzeigt.

    Ich drück ja auf den Button und dann läuft ja mein Code durch, der mir dann alles rüber kopiert, aber bei der rüber kopierung soll er ja in den Zeilen wo was drinsteht, diese überspringen und dann ab der nächsten leeren Zeile weiter machen.

    Hoff ich drück mich verständlich aus ;) (weiß irgendwie selbst nicht wie ich es erklären soll, ist auch meine erste richtige Erfahrung in VBA).

    Grüße DenizEmin
    Da musst du alles "zu Fuss" kopieren. Dauert bei ~10000 Zellen aber etwas...
    Wenn jetzt noch die Zeilen sozusagen zusammenbleiben sollen, dann dauert es noch etwas länger.

    Wenn leere Zeile vor der letzten vorkommen und du quasi die Lücken füllen möchtest, könntest du auch komplett leere Zeilen löschen, die letzte benutzte Zeile rausfinden und das Destination dementsprechend anpassen.

    Oder du kopierst nicht im klassischen Sinne, sondern fügst die Zellen ein, so verschieben sich die Lücken nach unten, bleiben aber erhalten.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Hi,

    Hier mal ein paar Befehle die Du gebrauchen kannst:

    Visual Basic-Quellcode

    1. 'Inhalt der Zelle A2 auf Sheet Mitarbeiter in Variable einlesen
    2. tmp = Sheets("Mitarbeiter").Cells(2,1)
    3. 'Inhalt der Variablen in Zelle A2 auf Sheet Standorte schreiben
    4. Sheets("Standorte").Cells(2,1) = tmp
    5. 'Um zu prüfen ob eine Zelle leer ist
    6. If Sheets("Standorte").Cells(2,1) = "" Then
    7. '[...]
    8. End If
    9. 'Und die Schleife drumherum:
    10. For i=1 To [Anzahl Datensätze]
    11. '[...]
    12. Next i
    13. 'oder
    14. i = 2 'in Zeile 2 anfangen
    15. Do
    16. '[...]
    17. i = i + 1
    18. Loop Until Sheets("Mitarbeiter").Cells(i,1) = ""

    Damit solltest Du alle benötigten Befehle haben um Dein Ziel zu erreichen. Wenn was nicht klappt, bitte mit Deinem dann vorhandenen Quellcode nochmal anfragen. Viel Spaß. ;)


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    Hi Leute,

    dank Euch nochmal für die zahlreichen Hilfen. Mittlerweilen bin ich mit meinem Code soweit fertig. Jetzt geht es mir nur noch darum in zu kürzen und das er mir nicht die Hintergrundfarbe der Tabelle Stationen ändert.
    Hiermal mein Code wie weit ich bin:

    Sub Daten_vergleichen_über_2_Tabellenblätter()

    'Variablen deklarieren
    Dim Suchname As String, Fundname As Range, letzte_Zeile_Tab_Mitarbeiter As Long, _
    letzte_Zeile_Tab_Stationen As Long, Zeile_Mitarbeiter As Long, Addresse As String, _
    gefundene_Zeile As Long, Zeile_Stationen As Long


    'Letzte beschriebene Zeile in Blatt "Mitarbeiter" Spalte G ermitteln und
    'in Variable "letzte_Zeile_Tab1" speichern
    letzte_Zeile_Tab_Mitarbeiter = Sheets("Mitarbeiter").Range("G65536").End(xlUp).Row

    'Letzte beschriebene Zeile in Blatt "Stationen" Spalte E ermitteln und
    'in Variable "letzte_Zeile_Tab2" speichern
    letzte_Zeile_Tab_Stationen = Sheets("Stationen").Range("E65536").End(xlUp).Row



    'For/Next Schleife zum erfasse des Suchbegriffes in Blatt "Mitarbeiter"
    For Zeile_Mitarbeiter = 2 To letzte_Zeile_Tab_Mitarbeiter

    If Worksheets("Mitarbeiter").Cells(Zeile_Mitarbeiter, 7).Value <> Empty Then

    'Den Namen aus der Zelle, die durch die For/Next Schleife angesprochen wird,
    'auslesen und in Variable "Suchname" speichern
    Suchname = Sheets("Mitarbeiter").Cells(Zeile_Mitarbeiter, 7)

    'Den Namen aus der Variablen "Suchname" mit dem Bereich E2:E letzte Zeile Tab2
    'in Blatt "Stationen" vergleichen
    With Sheets("Stationen").Range("E2:E" & letzte_Zeile_Tab_Stationen)
    Set Fundname = .Find(What:=Suchname, LookIn:=xlValues)

    'Wenn keine Übereinstimmung gefunden, dann...
    If Fundname Is Nothing Then

    '... Hintergrundfarbe der gefundenen Zelle in Blatt "Mitarbeiter" in
    'Farbe grün ändern und...
    ' Sheets("Mitarbeiter").Cells(Wiederholungen, 7).Interior.ColorIndex = 4

    '... Hintergrundfarbe der gefundenen Zelle in Blatt "Stationen" in
    'Farbe grün ändern und...
    ' Sheets("Stationen").Cells(gefundene_Zeile, 5).Interior.ColorIndex = 4


    '...den Suchnamen in Blatt "Mitarbeiter" kopieren und in Blatt
    '"Stationen" in die erste freie Zelle in Spalte E einfügen und...

    Sheets("Mitarbeiter").Cells(Zeile_Mitarbeiter, 7).Copy
    Sheets("Stationen").Cells(Sheets("Stationen").Range("E65536").End(xlUp). _
    Offset(1, 5).Row, 5).PasteSpecial Paste:=xlValues, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    Sheets("Mitarbeiter").Cells(Zeile_Mitarbeiter, 1).Copy
    Sheets("Stationen").Cells(Sheets("Stationen").Range("A65536").End(xlUp). _
    Offset(1, 1).Row, 1).PasteSpecial Paste:=xlValues, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    Sheets("Mitarbeiter").Cells(Zeile_Mitarbeiter, 6).Copy
    Sheets("Stationen").Cells(Sheets("Stationen").Range("B65536").End(xlUp). _
    Offset(1, 2).Row, 2).PasteSpecial Paste:=xlValues, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    Sheets("Mitarbeiter").Cells(Zeile_Mitarbeiter, 4).Copy
    Sheets("Stationen").Cells(Sheets("Stationen").Range("C65536").End(xlUp). _
    Offset(1, 3).Row, 3).PasteSpecial Paste:=xlValues, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    Sheets("Mitarbeiter").Cells(Zeile_Mitarbeiter, 5).Copy
    Sheets("Stationen").Cells(Sheets("Stationen").Range("D65536").End(xlUp). _
    Offset(1, 4).Row, 4).PasteSpecial Paste:=xlValues, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False




    'Abfrage Ende
    End If
    End With
    End If
    'Nächsten Schleifendurchlauf starten
    Next

    End Sub

    Wär Euch dankbar für Tips.

    Gruß Deniz