Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1308to1312
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

Ich weiss nicht wie ich es nennen soll

Ich weiss nicht wie ich es nennen soll
17.04.2013 09:00:23
Christopher
Hallo Comrads,
ich suche nach einer Lösung. Bzw. evtl. eine Idee.
Ich habe auf Tabelle 1 AUftragsnummern mit den Zeiten darunter. Ich möchte diese Daten nun für einen Import in SAP ein bisschen aufbereiten. Dazu wäre es super wenn ich die Zeile in der die Auftragspositionen stehen durchlaufen könnten und so wie als Bsp. ich Tabelle 2 angegeben, wiedergeben könnte. Natrürlich mit der dazugehörigen Zeit darunter.
Sprich Leere Felder ignorieren und auch nur die ersten 6 Ziffern wiedergeben.
Wie ich nur die ersten Sechs Ziffern wiedergeben weiss ich im Prinzip. Wo ich keine Rechte Idee habe ist, wie ich das machen könnte dass er nur befüllte Felder nacheinander aufreiht.
https://www.herber.de/bbs/user/84909.xlsx
Danke schonmal

40
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ich weiss nicht wie ich es nennen soll
17.04.2013 09:15:29
Rudi
Hallo,
ABCD
6 110545110479 
7Februar138 

ZelleFormel
B6{=WENNFEHLER(LINKS(INDEX(Tabelle1!$A3:$Z3;KKLEINSTE(WENN(Tabelle1!$A3:$Z3<>"";SPALTE($A:$Z);"");SPALTE(A1)));6);"")}
B7{=WENNFEHLER(INDEX(Tabelle1!$A4:$Z4;KKLEINSTE(WENN(Tabelle1!$A4:$Z4<>"";SPALTE($A:$Z);"");SPALTE(B2)));"")}
Achtung, Matrixformel!
Die geschweiften Klammern{} nicht eingeben,
sondern die Zelle mit
Shift + Strg + Enter
verlassen statt Enter alleine.

Gruß
Rudi

Anzeige
AW: Ich weiss nicht wie ich es nennen soll
17.04.2013 09:41:57
Christopher
Eine Frage noch. Bevor ich mir den Kopf darüber zerbreche. Funktioniert diese Formel in Verbindung mit INDIREKT ? Denn die Tabelle aus der die Zeiten und Nummern kommen würde ich gerne darüber abfragen.

AW: Ich weiss nicht wie ich es nennen soll
17.04.2013 10:15:06
Rudi
Hallo,
Funktioniert diese Formel in Verbindung mit INDIREKT ?
klar, wenn du alles richtig machst.
Gruß
Rudi

AW: Ich weiss nicht wie ich es nennen soll
17.04.2013 09:37:02
Klaus
Hi,
lass einmal dieses Script laufen:
Option Explicit
Sub MachEsNett()
Dim wksIn As Worksheet
Dim wksOut As Worksheet
Dim lRowNummer As Long
Dim iRowStep As Integer
Dim lRowLast As Long
Dim iColMonat As Integer
Dim iColFirst As Integer
Dim iColLast As Integer
Dim i As Integer
Dim j As Integer
Dim sTMP As String
Dim lRowOut As Long
Dim iColOut As Integer
Dim iColOutTmp As Integer
'******* VARIABLEN DEFINIEREN ************
'Arbeitsblätter benennen
Set wksIn = Sheets("Tabelle1")
Set wksOut = Sheets("Tabelle2")
'Ab dieser Zeile stehen Auftragsnummern
lRowNummer = 1
'Auftragsnummern stehen alle 2 Zeilen
iRowStep = 2
'die Monate stehen in Spalte A (A=1, B=2 usw)
iColMonat = 1
'Auftragsnummern stehen ab Spalte B
iColFirst = 2
'erste Zeile / Spalte der Ausgabe
lRowOut = 1
iColOut = 1
iColOutTmp = iColOut
'Das Output-Blatt wird erstmal gnadenlos gelöscht
wksOut.Cells.ClearContents
'per Schleife durch alle Monate gehen,
'innerhalb der Schleife durch die Auftragsnummern gehen
With wksIn
lRowLast = .Cells(.Rows.Count, iColMonat).End(xlUp).Row
For i = lRowNummer To lRowLast Step iRowStep
iColOut = iColOutTmp
iColLast = .Cells(i, .Columns.Count).End(xlToLeft).Column
wksOut.Cells(i + 1, iColOut).Value = .Cells(i + 1, iColMonat).Value
For j = iColFirst To iColLast
With .Cells(i, j)
'                .Select
If .Value = "" Then
Else
wksOut.Cells(lRowOut, iColOut + 1).Value = VBA.Left(.Value,  _
WorksheetFunction.Find(" ", .Value) - 1)
wksOut.Cells(lRowOut + 1, iColOut + 1).Value = .Offset(1, 0).Value
iColOut = iColOut + 1
End If
End With
Next j
lRowOut = lRowOut + 2
Next i
End With
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Ich weiss nicht wie ich es nennen soll
18.04.2013 07:13:22
Christopher
Ich hab für andere Funktionen schon eine Spalte mit den Namen der Blätter.
Kann ich
Set wksIn = Sheets(1)
darüber setzen?
Variable = ThisWorkbook.Worksheets(2).Range("P3:P107")

AW: Ich weiss nicht wie ich es nennen soll
18.04.2013 08:11:12
Klaus
Hi,
klar geht das. Aber wenn das so aussieht, warum war es dann in der Musterdatei noch nicht so? Jetzt kann ich die Lösung nur schießen.
Im Makro, kommentiere dies aus oder lösche es.
Set wksIn = Sheets("Tabelle1")
Stattdessen deklariere wksIn bereits in der allerersten Zeile:
Sub MachEsNett(wksIn as worksheet)
dann ein kleines CALL-Makro, dass "MachEsNett" einmal für jeden Tabellennamen ausführt:
Sub CallVieleBlattnamen()
Dim r As Range
For Each r In ThisWorkbook.Worksheets(2).Range("P3:P107")
Call MachEsNett(Sheets(r.Value))
Next r
End Sub
Und fertig. Macht aber wenig Sinn, da das Output-Blatt bei jedem Durchlauf gelöscht wird:
wksOut.Cells.ClearContents
Da musst du noch VIEL im Makro anpassen. Selbst schuld, meine Lösung war genau auf dein Muster gemünzt ;-)
Viel Spaß beim basteln!
Grüße,
Klaus M.vdT.
(Rudis Lösung mit INDIREKT hast du nicht hinbekommen?)

Anzeige
AW: Ich weiss nicht wie ich es nennen soll
18.04.2013 08:29:49
Christopher
An Rudis Lösung versuch ich mich gerade. (Kopf Raucht)
Joa tut mir Leid dass meine Vorlage nicht exakt das war was ich wollte. Mir war nciht klar was für eine tragweite das hat ;(
Aber nun hab ich mir alle Mühe gegeben das so gut wie möglich nachzubauen. ( Original Datei kann ich leider nicht schicken).

Die Datei https://www.herber.de/bbs/user/84924.xlsm wurde aus Datenschutzgründen gelöscht


Wenn du mal in der nähe bist geb ich dir ne Brotzeit aus :)

Boah! Was soll das?
18.04.2013 08:37:42
Klaus
Hallo Christopher,
hast du in deiner Mastertabelle auch verbundene Zellen? Ich glaube nicht.
im neuen Muster stehen die Blätter in Sheet(3).Range("A1:A"xx), du schreibst aber oben sie ständen in sheet(2).range("P3:P107"). Was denn nun?
Ich bastel dir das jetzt hin, ich hab da grad Lust drauf. Aber an allen nötigen Anpassungsarbeiten bist DU selbst schuld! :-)
Dateiupdate kommt in 10 minuten oder so. Stay tuned.
Wenn du mal in der nähe bist geb ich dir ne Brotzeit aus :)
Wenn du mir einen gefallen tuen und dich bedanken möchtest:
bitte überlege dir, wieviel dir eine Brotzeit mit mir in Euro Wert ist. Diesen Betrag spende stattdessen an:
http://www.plan-deutschland.de/helfen-mit-plan/spenden/
oder eine ähnliche Organisation deiner Wahl!
Grüße,
Klaus M.vdT.

Anzeige
AW: Boah! Was soll das?
18.04.2013 08:45:48
Christopher
Nein nirgends keine verbundenenen Zellen ( Den Fehler mach ich nie wieder ;))
sheet(2).range("P3:P107"). vergiss das, das wär im Original .
Wenn du die Lösung in meiner Musterdatei hinbringst, dann bastel ich mir das hoffentlich zu recht dass es dann auch in meiner Datei funktioniert. :)
Ich bevorzuge Tierschutz ! Ich überlege mir was !

Lösung (hoffe ich)
18.04.2013 08:56:39
Klaus
Hi,
lad dir mal:
https://www.herber.de/bbs/user/84925.xlsm
das Makro
Sub CallVieleBlattnamen()
macht erstmal das Blatt "Ausgang" leer, und schreibt dann aus X Blättern die Daten rein, hoffentlich in der Form wie du es dir vorstellst.
Der Code ist jetzt an einigen Stellen schlechter kommentiert und etwas unbeholfener, da ich ihn nur eben an die neuen Bedingungen angepasst habe.
Grüße,
Klaus M.vdT.

Anzeige
AW: Lösung (hoffe ich)
18.04.2013 09:04:23
Christopher
Wie machst du das nur so schnell ?
Ich versuch das gleich mal und geb dir nachher Feedback.
Eine Frage noch. Warum hast du in jede tabelle ein Option Explicit obwohl kein Code folgt ?

AW: Lösung (hoffe ich)
18.04.2013 09:09:38
Klaus
Huhu,
Wie machst du das nur so schnell ?
ich tippe über 400 Anschläge pro minute blind :-)
Ich versuch das gleich mal und geb dir nachher Feedback.
Bis gleich!
Eine Frage noch. Warum hast du in jede tabelle ein Option Explicit obwohl kein Code folgt ?
Ich habe eine Option an, die das automatisch in jede Tabelle schreibt. Es gibt überhaupt niemals einen Grund, irgendeinen Code OHNE Option Explicit zu schreiben - und die 15 Byte Speicherbedarf merkst du nicht. Bevor ich mir zu dem Thema jetzt die Finger wund schreibe, paste ich dir mal einen sehr lesenswerten Link zu diesem Thema:
http://www.online-excel.de/excel/singsel_vba.php?f=4
Grüße,
Klaus M.vdT.

Anzeige
AW: Lösung (hoffe ich)
18.04.2013 10:05:04
Christopher
Klaus, noch eine Sache, ich denke ich bekomm das nicht allein auf die Reihe.
In meiner Datei die ich dir geschickt habe, wähle ich oben den Monat aus. Dann soll er zu diesem Monat von jedem Mitarbeiter die Daten ziehen. Ist das eine große Änderung ?
Danke :)

AW: Lösung (hoffe ich)
18.04.2013 10:10:52
Klaus
Ist das eine große Änderung ?
Ja.
Da würde ich fast so weit gehen, den gesamten Code umzuschreiben ... ich schau mir das mal an. Vielleicht kann ich da ja auch ein "IF"-Block reinschummeln.
Dauert diesmal aber länger als 10 minuten, ich mach grad was anderes!
Grüße,
Klaus M.vdT.

Anzeige
ging doch fix AW: Lösung (hoffe ich)
18.04.2013 10:16:13
Klaus
Hi,
ging doch fix:
https://www.herber.de/bbs/user/84926.xlsm
ist jetzt aber ein Musterbeispiel an unstrukturiertem Code, in den ich 4-mal eine Aufgabenänderung "irgendwie reingeflickt" habe. Besser: von Anfang an die komplette Aufgabe bekannt geben, dann kannst du auch auf strukturierten und sinnvollen Code hoffen ...
Grüße,
Klaus M.vdT.

ging doch fix AW: Lösung (hoffe ich)
18.04.2013 11:15:34
Christopher
Ich geb mir Mühe mich besser auszudrücken bzw. meine Vorlagen exakt so zu gestalten wie ich sie brauche .
Ich hab den Code probiert. Er tut genau das was er soll. Ein klitzekleiner Haken noch. Im Ausgabe Blatt links wo jetzt der Monat steht sollte der Name des Mitarbeiters erscheinen. Damit die Zeit richtig zueordnet werden kann. Das ist hoffenltich nicht ein ganz so großes Ding . Ich will dich bei dem nice Wetter nicht zu sehr auslasten :)
Danke!!!

Anzeige
ging doch fix AW: Lösung (hoffe ich)
18.04.2013 11:29:11
Klaus
Ich will dich bei dem nice Wetter nicht zu sehr auslasten
Kein Problem. Ich bin in Estland. Hier ist es noch kalt.
Ausgabe Blatt links wo jetzt der Monat steht sollte der Name des Mitarbeiters erscheinen.
Und das fällt dir ERST JETZT ein? Nachdem es schon x Versionen gab, die ALLE den Monat geschrieben haben statt dem Mitarbeiternamen, und ich schon ein paar mal auf vollständige Problembeschreibung hingewiesen habe? Du bist lustig :-) Naja, das geht ja wirklich schnell. Suche dir diesen Codefetzen

If .Cells(i + 1, iColMonat).Value = wksOut.Range("A1") Then
wksOut.Cells(lRowTMP + 1, iColOut).Value = .Cells(i + 1, iColMonat).Value
For j = iColFirst To iColLast
und ändere ihn so:

If .Cells(i + 1, iColMonat).Value = wksOut.Range("A1") Then
wksOut.Cells(lRowTMP + 1, iColOut).Value = wksOut.Name
For j = iColFirst To iColLast
Noch ein gutgemeinter Tip: wenn du solche Kleinigkeiten hast, geh den Code im Einzelschrittmodus durch (F8). Du hättest gesehen, an welcher Stelle genau der Monatsname geschrieben wird. Hier jetzt stattdessen den Mitarbeiter zu schreiben, ist einfach!
Grüße,
Klaus M.vdT.

Anzeige
ging doch fix AW: Lösung (hoffe ich)
18.04.2013 11:50:19
Christopher
Also ich könnte schwören bei der letzten Datei die ich hochgeladen habe standen da Namen O.o

ging doch fix AW: Lösung (hoffe ich)
18.04.2013 12:41:15
Christopher
Ich habe es jetzt mit Einzelschritt probiert.
Der Text wird an dieser Stelle ausgegeben
For j = iColFirst To iColLast
Leider so sehr ich es versuche trau ich mir nicht zu an diesem Code irgendwas zu ändern.
Es stehen nämlich jetzt nicht die Namen da, auch nicht mehr die Monate sondern einfach nurnoch in jeder Zeile Ausgang O.o
Was machst du denn in Estland ? Wohnen ? Arbeiten?
Exil ? ;)

ging doch fix AW: Lösung (hoffe ich)
18.04.2013 12:52:11
Klaus
Der Text wird an dieser Stelle ausgegeben
For j = iColFirst To iColLast

Nein, das stimmt nicht - eine Zeile drüber! Die Zeile wird ERST markiert, DANN abgearbeitet.
in jeder Zeile Ausgang
Ah, da hab ich mich beim tippen verhauen. Ändere hier
        wksOut.Cells(lRowTMP + 1, iColOut).Value = wksout.Name
For j = iColFirst To iColLast

das wksOut.Name (das ist jenes sheet, das Ausgabe heisst) gegen wksIn.Name (das sind jeweils die Sheets, die Vornamen haben) und dann läuft es!
Leider so sehr ich es versuche trau ich mir nicht zu an diesem Code irgendwas zu ändern.
Das verstehe ich sehr gut. Für jeden falschen Versuch in VBA stirbt nämlich ein süßes Kätzchen. Nicht. Und damit der Computer spontan in Flammen aufgeht, musst du im Code schon sehr weit daneben liegen. Sicherungskopien (einfach als "Dateiname_VBATEST.xlsm") sind auch verboten!
Grüße,
Klaus M.vdT.

ging doch fix AW: Lösung (hoffe ich)
18.04.2013 13:19:12
Christopher
Ich hab nicht gesagt ich trau mich nicht sondern ich traue es mir nicht zu !! Das ist was anderes ;)

ging doch fix AW: Lösung (hoffe ich)
18.04.2013 13:23:09
Klaus
Hi,
weiss ich doch, ich wollt dich ja nur etwas auf den Arm nehmen :-) Läuft denn der Code jetzt?
Grüße,
Klaus M.vdT.

ging doch fix AW: Lösung (hoffe ich)
18.04.2013 13:34:21
Christopher
Code läuft, nun pflanze ich Ihn in meine Riesen Excel Datei ein und hoffe die tabellen alle richtig zuzuordnen damit er mir meine bestehenden 30 Tabellen nicht zerballert !!! :)
Frohes Schaffen und Danke dir Klaus.
Faszinierend wie man in dem Tempo aus dem Kopf einen Code raushauen kann. !!!!

Danke für die Rückmeldung!
18.04.2013 13:46:41
Klaus
damit er mir meine bestehenden 30 Tabellen
Das Zauberwort ist: Sicherheitskopie :-)

AW: Danke für die Rückmeldung!
18.04.2013 14:04:17
Christopher
Das halte ich für Riskant ich hab etliche Verknüpfungen zu anderen Dateien und bin da schonmal auf die Schnauze gefallen. Ich glaube sowieso dass Excel das nicht so gerne hat wenn man Verknüpfungen in Beide Richtungen macht. Mach ich die Datenbank plus eine Verknüpfte Datei auf die in beide Richtungen voneinander abhängig sind zerschiesst es alle Bezüge. Auch sehhr intelligent von Excel dass diese Formeln dann wirklich unbrauchbar werden selbst wenn Pfad und Datei verfügbar sind.
Dein Code setzt voraus das die sechsstellige Auftragsnummer zu Beginn steht oder?
Bis zur ersten Lücke und dann Minus 1 ?
Was passiert wenn Namen in der Tabelle stehen zu denen es aber kein Blatt gibt ? Werden diese übersprungen ? Oder kommt der ausserhalb des Index Fehlers daher ? Wenn ja dann erzeuge ich eine neue tabelle mit ausschliesslich den Namen zu denen es auch ein Worksheet gibt. :)

AW: Danke für die Rückmeldung!
18.04.2013 14:38:24
Klaus
Dein Code setzt voraus das die sechsstellige Auftragsnummer zu Beginn steht oder?
Bis zur ersten Lücke und dann Minus 1 ?

Ja, die Nummer kann aber auch 100-Stellig sein. Der Code sucht das erste Leerzeichen und nimmt dann alles links davon. War in allen deinen Musterdateien so :-)
Was passiert wenn Namen in der Tabelle stehen zu denen es aber kein Blatt gibt ? Werden diese übersprungen ?
Nein, dann kommt ein "Index ausserhalb des Bereichs" Fehler.
In deiner Aufgabenstellung wurde gesagt, alle Blattnamen stehen im Bereich soundso. Von einer Fehlerüberprüfung war da nie die Rede.
Ich habe dazu aber einen Standardcode, den ich dir gleich mal poste. Mein nächster Beitrag ist LINKS im Thema zu finden, da wir bald die Bildschirmbreite sprengen.
Bis gleich!

AW: Danke für die Rückmeldung!
18.04.2013 14:39:17
Christopher
Ich überlege gerade wie ich das machen könnte. für die Zukunft werde ich es so gestalten dass der Aufbau so ist
123456 Kunde Beschreibung
Im Moment ist das etwas chaotisch weil viele eben das noch selber ausfüllen
123456 Kein text (Find Funktion Fehler)
Text 123456 Text
Das einzige das mir einfällt wäre zu suchen wann kommt die erste Nummer und + 5 Zeichen. Oder so...

hier links weiter: Worksheet exists?
18.04.2013 14:45:11
Klaus
Da bin ich wieder!
Weiter oben hast du gefragt ob man den "Index ausserhalb Bereich" Fehler verhindern kann, wenn es einen "Namen" als Worksheet nicht gibt?
Kopiere dir dazu den unteren Code in dein Modul. Eine neue Function, und das Caller-Modul habe ich ersetzt. Das lange Modul, dass die eigentliche Arbeit macht, wird nicht angefasst.
Funktion: WksSheetExists gibt TRUE oder FALSE zurück, je nachdem ob es ein Worksheet gibt oder nicht. Wenn es ein Worksheet NICHT gibt, wird auch der Code nicht ausgeführt (und damit der Index-Fehler verhindert).

Option Explicit
Function WksSheetExists(sSheet As String) As Boolean
Dim wks As Object
On Error Resume Next
Set wks = Sheets(sSheet)
If Not wks Is Nothing Then
WksSheetExists = True
End If
On Error GoTo 0
End Function
Sub CallVieleBlattnamen()
Dim r As Range
Dim lrow As Long
Dim wksOut As Worksheet
Set wksOut = Sheets("Ausgang")
'Das Output-Blatt wird erstmal gnadenlos gelöscht
wksOut.Range("A2:A" & wksOut.Rows.Count).EntireRow.ClearContents
With Sheets("Blätter") 'Blattname oder sheets(3) oder Tabelle3 oder ....
lrow = .Cells(.Rows.Count, 1).End(xlUp).Row 'NAMEN IN SPALTE A!!!
'lRow = .Cells(.Rows.Count, 16).End(xlUp).Row 'Falls die Namen dann doch in P stehen ...
For Each r In .Range("A2:A" & lrow) 'auch hier evt. von A auf P anpassen
If WksSheetExists(r.Value) Then Call MachEsNett(Sheets(r.Value), wksOut)
Next r
End With
End Sub
um deinen Eifer zu dämpfen: Das habe ich mir nicht grad aus dem Ärmel getippt, sondern einfach aus meiner 0815-Standardcode Sammlung rauskopiert ;-)
Grüße,
Klaus M.vdT.

AW: hier links weiter: Worksheet exists?
18.04.2013 14:51:24
Klaus
Du schriebst:
Wenn ja dann erzeuge ich eine neue tabelle mit ausschliesslich den Namen zu denen es auch ein Worksheet gibt. :)
Das wäre natürlich am einfachsten.

AW: anderes Sub-Thema: Zahl von Text trennen
18.04.2013 14:53:42
Text
Du bist ein wandelndes Lexikon. Da hab ich ja jetzt genug Stoff um mir was zusammenzubauen ;)
Ich melde mich sobald meine Versuche von Erfolg gekrönt sind ;)

Oder direkt als VBA-Function ...
18.04.2013 15:16:49
Klaus
Hi Christopher,
oder du kopierst dir folgende Mini-Function, die ich grad geschrieben habe, irgendwo ins Modul:
Function GetNumberFromString(s As String)
Dim i As Integer
For i = 1 To Len(s)
If IsNumeric(VBA.Mid(s, i, 1)) Then
GetNumberFromString = GetNumberFromString & VBA.Mid(s, i, 1)
End If
Next i
GetNumberFromString = GetNumberFromString * 1
End Function
und rufst sie im Makro dann auf, indem du dies
If .Value = "" Then
Else
wksOut.Cells(lRowOut, iColOut + 1).Value = VBA.Left(.Value, WorksheetFunction.Find(" ", . _
Value) - 1)
wksOut.Cells(lRowOut + 1, iColOut + 1).Value = .Offset(1, 0).Value
iColOut = iColOut + 1
End If
durch die Function ersetzt:
If .Value = "" Then
Else
wksOut.Cells(lRowOut, iColOut + 1).Value = GetNumberFromString(.value)
wksOut.Cells(lRowOut + 1, iColOut + 1).Value = .Offset(1, 0).Value
iColOut = iColOut + 1
End If
dann sparst du dir den Umweg über die Formeln.
Grüße,
Klaus M.vdT.

AW: Oder direkt als VBA-Function ...
19.04.2013 06:38:18
Christopher
Huhu Guten Morgen ;)
ich bekomme jetzt laut Debugger hier
If .Cells(i + 1, iColMonat).Value = wksOut.Range("A1") Then
Fehler 13 Typen unverträglich.
Ich vermute mal das liegt daran, dass auf den Quellblättern noch jede Menge anderer Mist steht.
Ob es helfen würde im Makro den Bereich der ausgelesen werden soll weiter einzugrenzen? Also Nicht nur ab wo sondern auch bis wohin ?

AW: Oder direkt als VBA-Function ...
19.04.2013 08:14:10
Klaus
Hi Christopher,
in deinen Musterdateien stand aber kein Mist ... s.o., Musterdatei sollte Master entsprechen :-)
der Fehler 13 lässt auf ein #NV oder so in den Zellen schließen.
Der Code ist, meiner Meinung nach, inzwischen viel zu verwinkelt gewachsen und hat unendlich viele "Artefakte", die nicht gebraucht werden sondern so gewachsen sind.
Ich schreib das ganze Ding eben neu. Melde mich nachher wieder.
Grüße,
Klaus M.vdT.

Alles neu!
19.04.2013 08:52:25
Klaus
Hi Christopher,
hier die Musterdatei mit brandneuem Code:
https://www.herber.de/bbs/user/84946.xlsm
ich habe alle überflüssigen Schleifen usw rausgeworfen. Müsste jetzt auch mit #NV in den Eingabeblättern auskommen. Zum Testen habe ich ein paar Fehler in die Blätter eingebaut, die das Makro aber alle abfängt / abfangen sollte.
das Startmakro heisst CallManySheets
Grüße,
Klaus M.vdT.

AW: Alles neu!
19.04.2013 09:19:40
Christopher
Wird sofort probiert :) Ich melde mich !

schönes Wochenende!
19.04.2013 10:18:22
Klaus
Hi,
ich muss jetzt tatsächlich ein wenig arbeiten, und dann zum Flughafen.
Vor Montag schaue ich warscheinlich nicht mehr rein! Wenn noch was ist, meldest du dich Montag und/oder machst einen neuen Thread mit "@Klaus M.vdT" auf.
btw, such dir mal diesen Block
'Fehlermeldung für fehlende Sheets vorbereiten.
sFehltSheet = "Folgende Sheets fehlen:" & Chr(10)
sKeinMonat = "In folgenden Sheets fehlt der Monat " & sMonat & ":" & Chr(10)
bFehlerSheet = False

und ergänze da die Zeile
bFehlerMonat = False
das hatte ich noch vergessen. Ist nicht lebenswichtig, macht nur die eventuelle Fehlermeldung am Ende schicker (der Text "In folgendeden sheets ..." wird nicht angezeigt, wenn alle Sheets den Monat X haben).
Grüße,
Klaus M.vdT.

letzter Tag des Thread ...
23.04.2013 11:51:38
Klaus
Hi Christopher,
bevor der Thread morgen im Archiv verschwindet, würde mich noch eine Rückmeldung freuen ob es jetzt klappt wie gewünscht.
Grüße,
Klaus M.vdT.

AW: letzter Tag des Thread ...
24.04.2013 06:21:24
christopher
Hi Klaus,
Soweit funktioniert es. Allerdings sind noch ein paar feinjustierungen nötig. Ich bin diese woche in wilhelmshaven
Und versuch am abend das genauer auszuführen. Bis dahin.. frohes schaffen ;-)

AW: letzter Tag des Thread ...
29.04.2013 07:37:45
Christopher
Hallo Klaus,
so bin wieder zurück.
Also momentanes Ergebnis sieht so aus. ( Siehe Anhang )
Ichhab im Code keine Zeile mehr gefunden in der definiert wird von wo bis wo er nach Auftragsnummern sucht. Auf alle Fälle listet er jetzt auch die Spalten auf die ich nicht brauche. Und leider auch Spalten ohne überschriften. Ich hänge noch meine Quelle an dann weisst du woher die Daten kommen.
Die Spalten in denen Autragsnummern stehen, bzw die Spalten um die es hauptsächlich geht sind Q:AW
https://www.herber.de/bbs/user/85108.xlsx
https://www.herber.de/bbs/user/85109.xlsx

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige