kein Erfolg? Was heißt das?
26.06.2011 11:36:53
Erich
Hi Marco,
"ich habe also beide Makros getestet leider ohne Erfolg" glaube ich dir nicht.
Wurde gar keine MsgBox angezeigt?
Wurde angezeigt, dass der Name des aktuellen Blatts nicht gefunden wird?
Welches Blatt war das aktive Blatt, als du die beiden Makros getestet hast?
Stand dieses Blatt in der Liste?
Zur Erinnerung: Du hattest uns gefragt:
"Meine Frage ist mit welchem Syntax suche ich in dem ersten Übersichts-Sheet in Spalte A nach dem gerade geöffneten Sheet?"
Den Code habe ich im Zusammenhang mit deiner Fragestellung nicht wirkllioch verstanden.
Du wolltest erst weiter unten im Code ermitteln, wo der Blattname in der Liste auftaucht.
Weit davor schreibst du aber schon Werte in Worksheets("Ergebnis"). Solltest du nicht erst ermitteln,
in welche Zeile die Werte geschrieben werden sollten? Vielleicht habe ich das nicht richtig verstanden.
In deiner Prozedur geht es auch nicht um das gerade geöffnete (aktive?) Blatt,
sondern um (fast) alle Blätter innerhalb einer Schleife. Diese Blätter müssen (und sollten) gar nicht aktiv sein.
Schau dir den folgenden Code mal an. Da sind auch weitere Fragen drin:
Option Explicit ' IMMER zu empfehlen!
Sub Werte_sammeln2()
Dim neuDatum, FWdatum, addTage, neuDate ' Warum waren diese nicht deklariert?
Dim ws As Worksheet
' Dim Zeile As Integer ' wird nicht mehr gebraucht
Dim Letzte As Integer
Dim a As Integer
Dim varF As Variant, lngZ As Long
Worksheets("Ergebnis").Select
' Zeile = 2 ' Zeile der Zielliste wird ermittelt, als lngZ
For Each ws In ActiveWorkbook.Worksheets
' x = ws.Name ' wird gar nicht verwendet
If ws.Name "Filter" And ws.Name "Muster" And _
ws.Name "Ergebnis" And ws.Name " Bestellblatt " Then
' ------------------------------------------ Suche Blattnamen in Spalte A
varF = Application.Match(ws.Name, Columns(1), 0)
If IsError(varF) Then
MsgBox ws.Name & " fehlt in der Blattliste", vbCritical
Exit Sub ' oder was soll dann passieren?
Else
lngZ = CLng(varF)
MsgBox Cells(lngZ, 1) & " steht in Zelle A" & lngZ
End If
' ------------------------------------------ Ende Suche
Letzte = ws.Range("A200").End(xlUp).Row ' letzte Zeile Filterkontrolle
'statt Range("B" & lngZ) = ws.Range("A" & Letzte) ' Datum letzter Filterkontrolle
' besser und kürzer:
Cells(lngZ, 2) = ws.Cells(Letzte, 1) ' Datum letzter Filterkontrolle
Range("C" & lngZ) = ws.Range("B" & Letzte) ' Name letzter Filterkontrolle
neuDatum = Range("B" & lngZ) + 92
Range("D" & lngZ) = neuDatum
ws.Range("H" & Letzte) = neuDatum
Range("G" & lngZ) = ws.Range("H" & Letzte) ' Datum nächster Filterkontrolle
Letzte = ws.Range("I200").End(xlUp).Row ' letzte Zeile Filterwechsel
Range("E" & lngZ) = ws.Range("I" & Letzte) ' Datum letzter Filterwechsel
Range("F" & lngZ) = ws.Range("J" & Letzte) ' Name letzter Filterwechsel
'Worksheets("ws.").Select ' unnötig, das Blatt ist schon aktiv
FWdatum = ws.Range("B" & 2)
Select Case FWdatum
Case "F4", "F5", "F6", "F7", "F8", "G4"
addTage = 365
Case "F9"
addTage = 730
Case "H13", "H14", "A-kohle"
addTage = 1825
End Select
neuDate = ws.Range("I" & Letzte) + addTage
ws.Range("L" & Letzte) = neuDate
Range("G" & lngZ) = neuDate
End If
Next ws
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort