Microsoft Excel

Herbers Excel/VBA-Archiv

Daten mit Schleife abarbeiten

Betrifft: Daten mit Schleife abarbeiten von: Nik
Geschrieben am: 01.11.2012 10:52:08

Hallo zusammen,

lang lang ist es her mit VBA, von daher stehe ich grad ein wenig auf der Leitung.
Ich habe ein Dropdownfeld, in dem ich Namen auswählen kann. Der Wert des Dropdowns steht in der Zelle O1.

Je nach Auswahl im Dropdown stehen in der Range A1:C1 diverse Werte, die ich nun ebenfalls nach A1:C1 auf ein anderes Sheet kopieren müsste. Dies muss er solange wiederholen bis alle Einträge im Dropdown abgearbeitet sind.

Das kopieren hab ich soweit gelöst:
Worksheets("Rechnung").Select
Range("P2:Y2").Copy
Worksheets("Zusammenfassung").Select
Cells(65000, 1).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Allerdings müsste ich jetzt nun noch den Wert in O1 mit einer Schleife so abändern, dass alle Einträge im Dropdown abgearbeitet sind. Kann mir jemand da auf die Sprünge helfen?

Vielen lieben Dank und Gruss
Nik

  

Betrifft: verstehe nicht alles von: Tino
Geschrieben am: 01.11.2012 11:22:55

Hallo,
das kopieren könntest Du ohne Select erledigen.

With Worksheets("Zusammenfassung")
    .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(, 10).Value = _
    Worksheets("Rechnung").Range("P2:Y2").Value
End With
Das andere wovon Du schreibst, verstehe ich nicht!
Da wäre vielleicht eine Beispieldatei gut, wo man erkennen kann was geschehen soll.

Gruß Tino


  

Betrifft: AW: verstehe nicht alles von: Nik
Geschrieben am: 01.11.2012 11:43:31

Hallo Tino,
vielen Dank für das Feedback, allerdings sind die Files eine ziemliche Baustelle, so dass es eher schwierig ist mit der Bsp.-Datei. Vergiss aber am besten mal den Code weiter oben.

Folgendes: Ich habe ein Dropdownfeld in dem Namen stehen und so ausgewählt werden können. Je nach Auswahl ändert sich die Zelle O1 (bei Name 2 steht dort dann eben eine 2) Die Zellen A1:C1 sind jeweils verformelt, so dass diese Werte sich je nach Auswahl Namen ändern. Nun sollte ich eben eine Schleife haben, die alle Namen im Dropdown abarbeitet. Entweder dass das Makro in O1 nacheinander die Werte 1 bis 50 reinschreibt und abarbeitet (also der oben aufgeführte Copy-Befehl). Ganz klasse wäre natürlich dass das Makro selbständig erkennt wieviel Einträge im Dropdown stehen, also nicht nur fix 50 Einträge abarbeitet. Ist das nun verständlich? Sorry, ist manchmal gar nicht so einfach zu erklären..

Danke und Gruss
Nik


  

Betrifft: AW: verstehe nicht alles von: Tino
Geschrieben am: 01.11.2012 12:01:57

Hallo,
hier mal ein Versuch.
Ich denke mal das dieses Dropdownfeld aus einem Rangebereich (Liste) gefüllt wird.

Sub Makro1()
Dim n&, nn&, MerkWert
With Application
    .ScreenUpdating = False
    .EnableEvents = False
    
    With Worksheets("Rechnung")
        'Name des Dropdown evtl. anpassen 
        nn = Range(.Shapes("Dropdown 1").DrawingObject.ListFillRange).Rows.Count
        MerkWert = .Range("O1").Value
    End With
    With Worksheets("Zusammenfassung")
        For n = 1 To nn
            Worksheets("Rechnung").Range("O1") = n
            'kann evtl. gelöscht werden wenn Berechnung auf Auto... steht 
            Worksheets("Rechnung").Calculate
            
            .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(, 10).Value = _
                Worksheets("Rechnung").Range("P2:Y2").Value
        Next n
    End With
    
    Worksheets("Rechnung").Range("O1").Value = MerkWert
    
    .EnableEvents = True
    .ScreenUpdating = True
End With
End Sub
Gruß Tino


  

Betrifft: AW: Daten mit Schleife abarbeiten von: Nik
Geschrieben am: 01.11.2012 12:20:24

Super, vielen lieben Dank! Hab es eben mal ausprobiert... Aber ne ganz dumme Frage: wie finde ich raus was für einen Namen Excel für das Listenfeld/ Dropdown vergeben hat?

Danke und Gruss
Nik


  

Betrifft: AW: Daten mit Schleife abarbeiten von: Nik
Geschrieben am: 01.11.2012 12:22:32

Habe es eben rausgefunden...DANKE! Allerdings wird jeder Datensatz nun doppelt in die Zusammenfassung geschrieben...:-(

Dim n&, nn&, MerkWert

With Application
.ScreenUpdating = False
.EnableEvents = False

Worksheets("Zusammenfassung").Select
Range("A2:K1000").Delete

Worksheets("Rechnung").Select



With Worksheets("Rechnung")
'Name des Dropdown evtl. anpassen
nn = Range(.Shapes("Listenfeld 3").DrawingObject.ListFillRange).Rows.Count
MerkWert = .Range("O1").Value
End With
With Worksheets("Zusammenfassung")
For n = 1 To nn
Worksheets("Rechnung").Range("O1") = n

.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(, 10).Value = _
Worksheets("Rechnung").Range("P2:Y2").Value

Worksheets("Rechnung").Select
Range("P2:Y2").Copy
Worksheets("Zusammenfassung").Select
Cells(65000, 1).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Next n
End With

Worksheets("Rechnung").Range("O1").Value = MerkWert

.EnableEvents = True
.ScreenUpdating = True
End With

Was läuft hier falsch?


  

Betrifft: AW: Daten mit Schleife abarbeiten von: Tino
Geschrieben am: 01.11.2012 12:30:32

Hallo,
du hast deine Zeilen fürs kopieren auch mit im Code.

Gruß Tino


  

Betrifft: AW: Daten mit Schleife abarbeiten von: Nik
Geschrieben am: 01.11.2012 12:31:18

Hab es geschnallt, sprich gemerkt was ich falsch gemacht! Es funktioniert! Vielen lieben Dank! Weiss gar nicht wie ich danken soll! Super! :-)

Gruss
Nik


 

Beiträge aus den Excel-Beispielen zum Thema "Daten mit Schleife abarbeiten"