Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1592to1596
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

2 Schleifen Problem

2 Schleifen Problem
23.11.2017 16:08:15
irwitzer
Hallo liebes Forum,
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

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2 Schleifen Problem
23.11.2017 16:27:51
Peter(silie)
Hallo,
dein Error Handler ist kein error handler.
Du hast ihn zwar so genannt, aber anspringen tut er immer.
Vor "MsgBox cName..." musst du "If Err.Number 0 Then" schreiben.
Err ist ein Objekt in Excel und enthählt Infos über Fehler usw.
Tippe einfach mal Err. ein im Sub und er müsste dir die Liste anzeigen.
Unten ein wenig Code, hier erklärung:
Erstelle eine Textdatei an einem von dir definierten Ort und schreibe dort deine Sachen rein,
dann hast du am ende keine elendig lange MsgBox und kannst dir die Sachen anschauen wann immer du willst und nicht nur nach ende des Codes.
Mit der Function Create_Textfile erstellst du eine Textdatei am angegebenen Pfad
ACHTUNG! Der Name der datei + ".txt" Endung muss im Pfad dabei sein!
Du kannst optional schon beim erstellen text reinschreiben, musst du aber nicht.
Mit der Function Textfile_Append_Text, fügst du der Angegebenen Textdatei
am ende wieder neuen Text hinzu, du erweiterst sie also.
Die beiden Funktionen haben zwar Boolean als Rückgabewert, werden aber immer False liefern.
Habe mir angewöhnt aus vielen Dingen Functions zu machen, auch wenn es keinen Sinn macht...
Bitte nicht auch so machen!
Option Explicit
Private Const TextfilePath As String = "C:\Dein_Speicherpfad\dein_dateiname.txt"
Private Sub BadMappe(ByVal cName As String)
Create_Textfile TextfilePath
For Each ws In Worksheets
If ws.Name = cName Then
Else
Textfile_Append_Text TextfilePath, ws.Name & " konnte nicht gefunden werden."
End if
Next ws
End Sub
Public Function Create_Textfile(ByVal Save_Path As Variant, Optional ByVal Input_ As Variant)  _
As Boolean
Dim file_ As Long
file_ = FreeFile
Open Save_Path For Output As #file_
If Not IsMissing(Input_) Then
Print #file_, Input_
End If
Close #file_
End Function
Public Function Textfile_Append_Text(ByVal File_Path As String, ByVal Input_ As String) As  _
Boolean
Dim file_ As Long
file_ = FreeFile
Open File_Path For Append As #file_
Print #file_, Input_
Close #file_
End Function

Anzeige
AW: 2 Schleifen Problem
23.11.2017 17:06:12
Nepumuk
Hallo,
Vor "MsgBox cName..." musst du "If Err.Number 0 Then" schreiben.
Vor MsgBox musst du Exit Sub schreiben.
Gruß
Nepumuk
AW: 2 Schleifen Problem
23.11.2017 18:17:21
irwitzer
Hallo Nepumuk,
If Err.Number 0 Then und logisch Exit Sub hat gefehlt Danke + das ich cName = ActiveSheet.NAME eine Zeile weiter oben plaziert habe dann bekomme ich das richtige Blatt ausgegeben wenn "Kopieren auf Fehler läuft, weil der Range Name nicht im Batt existier.
Muss mich jetzt mit Err. Nummer beschäftigen habe ich vernachlässigt/noch nicht gemacht.
liebe Grüße irwitzer
AW: 2 Schleifen Problem
23.11.2017 18:24:29
irwitzer
Hallo Peter(silie)
Der Teil Create_Textfile schaue ich mir gerade an dass dauert jetzt erst mal bis ich vollständig durchgestiegen bin, wenn ich mir selbst einen art Log-Datei erstellen kann ich mir ev auf das eher unschöne "dauer Debug.Print" verzichten. Ich mache mich mal ran, vielen Dank und liebe Grüße irwitzer
PS: ich Funktionen niemals :) Liebe Grüße
Anzeige
AW: 2 Schleifen Problem
23.11.2017 18:54:46
irwitzer
Nochmals Hallo Peter(silie)
Ich hätte nicht so schnell antworten sollen ich habe es jetzt erst verstanden du gibst mir wirklich die Liste aus der Blätter die nicht übertragen wurden als Text file und es läuft bereits Danke.
Ich brauch allerdings die Information welche Blätter der Trainermappe gesucht und nicht gefunden wurden aktuell bekomme ich eine Liste der Badmappe mit allen Sheets die nicht gefunden wurden.
ich habe
Textfile_Append_Text TextfilePath, ws.Name
Textfile_Append_Text TextfilePath, cName 'ersetzt und
nach if Then ..... ein Exit Sub gesetzt vor Else in der Hoffnung das er aus dm If raus geht ohne den cName in die Datei zu schreiben weil ja gefunden aber das ist quatsch da die Schleife ja mehrfach durchläuft bevor das Blatt gefunden wird und dem entsprechend pro Schleife ein Eintrag in meinem LOG.text landet.
Ich probiere noch weiter herum die Idee mit Create_Text ist in jedem Fall hilfreich wenn du noch eine Idee hast wie ich die nicht übertragenen Blätter aus der TrainerMappe (Quelle) bekommen kann dann immer her damit Liebe Grüße irwitzer
Anzeige
AW: 2 Schleifen Problem
23.11.2017 21:58:25
Peter(silie)
Hallo,
erstmal einen schönen Abend.
Freut mich dass du so begeistert bei der Sache bist.
Morgen werd ich dir mal ein paar Funktionen und Subs liefern die immer hilfreich seien können und
dich vielleicht ein wenig weiter bringen.
Soll ich auf Kommentare und Beispiele verzichten oder möchtest du dann ein paar erklärungen zu den
Code teilen?
AW: 2 Schleifen Problem
24.11.2017 10:27:38
irwitzer
Hallo Peter(silie),
gerne! Ich würde mich freuen auch über das Auskommentieren, das macht es manchmal einfacher.
Das Problem was ich hatte mit der if und wo Exit sub gesetzt werden muss, ist gelöst! So das jetzt am ende wirklich nur noch die Blätter aus der Qellmappe in das Text Log geschrieben werden und damit ist auch meine "Zusatzversicherung" dass A alle Blätter übertragen werden oder B ich das sehen kann erstellt, Danke dir nochmals!
Stoff der mich weiter bringt würde mich sehr freuen! Aktuell experimentiere ich mit deiner Create Text File herum. gerne hätte ich dass ich wirklich die 2 oder 3 Blätter am ende (die nicht übertragen wurden in einer (einzigen) MsgBox angezeigt werden
ev muss ich einfach am ende dass .txt auslesen und in einer MsgBox ausgeben, ich probier gerade...
Liebe Grüße
Anzeige
AW: 2 Schleifen Problem
24.11.2017 12:36:32
Peter(silie)
Hallo,
hier eine Mappe mit Codes drinnen: https://www.herber.de/bbs/user/117891.xlsm
Öffne einfach den Editor.
Es ist ein Modul und eine Klasse enthalten.
Wobei du dir erst das Modul anschauen solltest.
AW: 2 Schleifen Problem
24.11.2017 13:05:23
irwitzer
Vielen danke, das Modul enthält einige spannende Funktionen die ich mir gerade anschaue vom Inhalt der Klasse bin ich aktuell etwas überfordert aber mit der Zeit... Vielen Dank für die Sammlung ich nehme mir diese jetzt mal zur Brust und schaue was ich dabei versteh und was ich dazu lerne. Ein schönes Wochenende, liebe Grüße irwitzer
Anzeige
Bitte und Danke
24.11.2017 14:08:31
Peter(silie)
Hallo,
viel Spaß und verzeihe die Unordnung innhalb der Klasse VBAgent.
Hoffe da ist was für dich dabei, was dir hilft.
Finde es gut wie du an die Sachen rangehst, mach weiter so!
Und Danke Nepumuk.
AW: 2 Schleifen Problem
24.11.2017 13:12:10
Nepumuk
Hallo Peter,
sehr schön.
Gruß
Nepumuk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige