DenizEmin Geschrieben 19. Januar 2011 Teilen Geschrieben 19. Januar 2011 Hallo Leute , 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 da ich kaum oder sagen wir keine Erfahrung in VBA hab, dank ich Euch! Gruß Deniz Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DenizEmin Geschrieben 22. Januar 2011 Autor Teilen Geschrieben 22. Januar 2011 Hat sich schon erledigt, habs rausgefunden! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DenizEmin Geschrieben 22. Januar 2011 Autor Teilen Geschrieben 22. Januar 2011 Hi, es ist so, ich hab zwei Registerkarten die eine heißt Mitarbeiter die andere Stationen. Nun hab ich ein Button erstellt das mir bestimme Spalten von Mitarbeiter in bestimmte Spalten in Stationen kopiert. Mein Problem ist jetzt, wie schaff ich es, das wenn ich was in Stationen zusätzlich reinschreib dies nicht überschrieben wird, sonder bei der Einfügung der Daten von Mitarbeiter ab der nächsten leeren Zeile weitergemacht wird? Hier mal mein Code, den ich bis jetzt hab: 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("D22000").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 Wär für Eure Hilfe dankbar da ich echt mittlerweilen am verzweifeln bin! Gruß DenizEmin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth Sidious Geschrieben 25. Januar 2011 Teilen Geschrieben 25. Januar 2011 Versuch das ganze doch mal mit Variablen. If Zelle(A1) != "" Then Zählwert = Zählwert+1 End if If Zählwert = 2 Then A1=Daten End if Zähle einen Wert hoch bis eine Leere zeile erwischt wird. Nur mal so als Lösungsansatz. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DenizEmin Geschrieben 10. März 2011 Autor Teilen Geschrieben 10. März 2011 Danke für die Hilfe. Hab jetzt meinen VBA-Code soweit fertig. Hätte jemand ne Idee wie ich den noch kürzen könnte und wie ich es hinkrieg das er mir die Hintergrundfarbe in Stationen nicht ändert? Hier mal der Code: 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 'Bildschirmaktualisierung ausschalten Application.ScreenUpdating = False '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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Codemancer Geschrieben 10. März 2011 Teilen Geschrieben 10. März 2011 Naja, optimieren musst du das Ding schon selbst Aber ein, zwei Tipps kann ich dir geben: Du hast mehrere Funktionsblöcke, die bis auf ein Paar Variablen völlig identisch sind. Solche Blöcke kannst du z.B. in eine eigene Methode auslagern, sodass du nur diese aufrufst und die entsprechenden Variablen einfach als Parameter übergibst. Dann benutzt du einen unnötigen With-Block. Zumindest, soweit ich das gesehen hab. Du benutzt nur einmal ein .Find, ansonsten nichts in der Richtung. Prüfe dies. Letztendlich kommentierst du zu ausgiebig. Naja okay, ist geschmackssache, aber zu viele Kommentare blähen den Code auf und machen das Gegenteil von dem, was sie eigentlich sollen: Übersicht und Klarheit verschaffen. Ein Beispiel: Da, wo du die Hintergrundfarbe festlegst. Die beiden Zeilen sind sich ziemlich ähnlich und können zusammen gefasst werden. Im Prinzip interessiert auch nicht wirklich, wo genau du jetzt was machst, sondern nur was du machst und das wo steht dann im Code. Aber diese Zeilen hast du eh komplett auskommentiert, also kannst du sie auch raushauen, insofern sie wirklich nicht mehr benötigt werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.