tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1325
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    janny janny ist offline Grünschnabel
    Registriert seit
    Feb 2010
    Beiträge
    1
    Hallo,

    ich bin Neuling bei VBA und muss für meine Chefin ein Makro programmieren. Es geht um folgendes: Ich möchte eine Tabelle mit Veranstaltungen programmieren. Jede einzelne Veranstaltung ist in einer Zeile und hat jeweils zwei Datumsangaben - einmal die Anmeldefrist und einmal der Beginn der Veranstaltung. Jetzt sollen die Veranstaltungen in verschiedene Arbeitsblätter sortiert werden. Un zwar so:

    1. Das erste Arbeitsblatt soll Veranstaltungen enthalten, deren Anmeldefrist noch nicht abgelaufen ist und die noch nicht begonnen haben.
    2. Das zweite zweite Arbeitsblatt soll Veranstaltungen enthalten, die noch nicht begonnen haben.
    3. Das dritte Arbeitsblatt soll Veranstaltungen enthalten, deren Anmeldefrist abgelaufen sind und die schon begonnen haben.

    Neue Veranstaltungen werden imimer im ersten Arbeitsblatt hinzugefügt. Ich möchte nun, dass sich die Veranstaltungen vom ersten Arbeitsblatt auf die anderen Arbeitsblätter aufteilen, wenn man auf einen Button klickt. Ich habe dafür auch schon einen VBA-Code programmiert, den ich irgendwie zusammengebastelt habe. Leider hat der Code ein Problem. Immer wenn das Makro startet, dann überschreibt er die vorhandenen Einträge in Arbeitsblatt 2 und 3. Ich möchte aber, dass die Zeilen, die vom ersten in das zweite und dritte Arbeitsblatt verschoben werden, an die vorhandenen Einträge angehangen werden. Ich habe auch schon gegoogelt. Irgendwo muss ich was einfügen, damit die Zeilen nicht überschrieben werden. Was mache ich bloß flasch? Kann mir jemand verraten, was ich verändern muss. Vielen Dank für eure Hilfe.

    Jan


    Hier der Code:


    Sub Schaltfläche2_BeiKlick()

    Dim a As Long, i As Long
    Application.ScreenUpdating = False
    a = 1


    For i = Cells(Rows.Count, 2).End(xlUp).row To 1 Step -1
    With Worksheets("Tabelle1")
    If Date - Cells(i, 2) > Today Then Rows(i).Cut _
    Destination:=Worksheets("Tabelle2").Rows(a)
    a = a + 1

    End With

    Next i
    Application.ScreenUpdating = True
    End Sub
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Du kannst versuchen herauszufinden wo die letzte Zeile im Zeil-Sheet ist und dann dort starten

    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    Public Sub test()
        Dim source As Worksheet
        Dim target As Worksheet
        Dim LastRowNrInTarget As Long
        
        Set source = Me.Worksheets("Sheet1")
        Set target = Me.Worksheets("Sheet2")
     
        'letzte Ziele im Ziel berechnen
        LastRowNrInTarget = lastRowNr(target)
     
        For i = lastRowNr(source) To 1 Step -1
            'deine Bedinung
            If True Then
                'neue Zeile berechnen
                LastRowNrInTarget = LastRowNrInTarget + 1
                Call source.Rows(i).Cut(Destination:=target.Rows(LastRowNrInTarget))
            End If
        Next i
     
    End Sub
     
    'Funktion um die letzte Zeile zu ermitteln
    'http://www.excel-inside.de/joomla/2009050487/VBA-Zellen-Bereiche/letzte-zeile-letzte-spalte-und-letzte-zelle-per-vba-ermitteln.html
    Private Function lastRowNr(ByRef ws As Worksheet)
        lastRowNr = ws.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    End Function
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    jannyyy Tutorials.de Gastzugang
    Hallo yaslaw,

    vielen Dank für deine Hilfe. Ich habe den Code umgeschrieben und jetzt funktioniert alles. Super vielen Dank

    janny
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 04.05.09, 18:54
  2. Antworten: 0
    Letzter Beitrag: 30.12.08, 19:31
  3. Maske in anderes Dokument kopieren
    Von Thomas D im Forum Photoshop
    Antworten: 1
    Letzter Beitrag: 29.05.07, 10:04
  4. C# - Zeilen von Textfile überschreiben
    Von Alexander12 im Forum .NET Datenverwaltung
    Antworten: 4
    Letzter Beitrag: 05.11.05, 15:14
  5. Antworten: 0
    Letzter Beitrag: 02.11.05, 21:56