2 Schleifen Problem
23.11.2017 16:08:15
irwitzer
vorweg vielen Dank an alle ich habe die letzten paar Monat fast täglich hier vorbeigeschaut und 90% aller meiner fragen beantwortet gefunden ohne das ich selbst eine gestellt habe, Herber hat mich richtig weiter gebracht und immer dann wenn die Dokumentation und Hilfe versagt bekomme ich hier Stoff zum weiterarbeiten.
Mittlerweilen ist bei mir ein gewisser Ehrgeiz gewachsen, ich schreibe seid 14 Tagen ein kleines Stück Code was nach dem Öffnen alle Daten aus der Trainermappe (die Quellen) in meine Badmappe (das Ziel) überträgt. Hurrey ich habe meine erste Parameterübergabe bestanden und sie funktioniert endlich!
Das Konzept ist: ich bekomme 2x im Monat 20 Trainermappen mit je 5-15 Blättern und muss diese in die Badmappe 150 Blätter übertragen die Blätter in der Trainermappe sind identisch mit den Blättern in der Badmappe sie stammen ursprünglich aus der Badmappe. Die Trainermappen enthalten immer auch Blätter die nicht in der Badmappe sind, mit diesen muss (erstmal) auch nichts gemacht werden.
Der Code den ich geschrieben habe funktioniert jetzt, und ich habe dem entsprechen nur 2 Fragen:
1: bei letzten Blatt der Trainermappe springt mein Errorhandler an warum weiß ich nicht? (ich kann gut damit Leben/Arbeiten aber das Warum oder das wie macht man es richtig ist für mich hier die Frage)
2: gibt es eine Möglichkeit das ich eine Liste der Blätter z.B. als MsgBox am ende bekommen kann mit allen Blättern die nicht übertragen worden sind (weil sie z.B. nicht in der Badmappe existieren) Das erste Blatt in allen Mappen ist das Deckblatt und unwichtig es kann in der liste vorkommen oder auch nicht.
Ich hoffe ich konnte klar und einfach beschreiben was ich im Kopf habe wenn nicht dann sagt bescheid.
PS: in Bezug auf mein Code rufe ich auf wer Lust und Zeit hat den mal zu verbessern oder andere Vorschläge zu machen (auch wenn ich noch so oft lese ich soll auf Select oder Activate verzichten ich weiß beim besten willen nicht wie ich das umsetzten kann)
------
Option Explicit
Public cName As String, BADM As String, TRAM As String
Public ws As Worksheet
Sub TrainerMappe()
BADM = "Badmappe.xlsx"
TRAM = ActiveWorkbook.NAME
On Error GoTo Errorhandler
For Each ws In Worksheets
ws.Activate
If ws.Index > 1 Then
Range("Pay_01bis15").Copy
cName = ActiveSheet.NAME
Workbooks(BADM).Activate
Call BadMappe(cName)
Workbooks(TRAM).Activate
Debug.Print cName & " cName Rückker zur ersten schleife"
End If
Next ws
Errorhandler:
MsgBox cName & " / " & TRAM & " es ist ein Fehler aufgetretten in der ersten Schleife"
End Sub
Private Sub BadMappe(ByVal cName As String)
Debug.Print cName & " cName VOR der Zweiten Schleife"
Debug.Print ActiveWorkbook.ActiveSheet.NAME & " aktives Blatt ( _
Badmappe) VOR der zweiten Schleife"
For Each ws In Worksheets
ws.Activate
Debug.Print cName & " cName in der Zweiten Schleife"
Debug.Print ActiveWorkbook.ActiveSheet.NAME & " aktives Blatt ( _
Badmappe) in der zweiten Schleife"
If ActiveSheet.NAME = cName Then
Range("Pay_01bis15").PasteSpecial Paste:=xlPasteValues, SkipBlanks:=True
Exit Sub
End If
Next ws
End Sub