Oh, so ist das zu verstehen. Alles klar :) schon wieder was dazu gelernt, wie man es vereinfachen kann!
Ich habe jedoch noch ein weiteres anliegen, das eben falls mit dem Set = Befehl zu tun hat.
und zwar habe ich folgenden code:
Private Sub Suchen_Eintragen_Click()
Dim Prognose As Workbook
Dim Datenbasis As Workbook
Dim Prognose_Blatt As Worksheet
Dim Anfang_Zeitraum As Range
Dim PW_Tag1 As Variant
Dim Eingabezeile As Variant
Sheets("Prog_Master").Activate
Set Anfang_Zeitraum = ThisWorkbook.Sheets("Prog_Master").Range("a16") 'Zeile mit der ersten _
Uhrzeit! -> 00:15
Set PW_Tag1 = ThisWorkbook.Sheets("PW").Range("H2") 'Do 49
Set PW_Tag2 = ThisWorkbook.Sheets("PW").Range("L2")
Set PW_Tag3 = ThisWorkbook.Sheets("PW").Range("P2")
Worksheets("Daten").Activate
ActiveSheet.Range("a:f").Select
'PW als Spalte definieren
Set PW = Selection.Find(What:="PW", after:=ActiveCell, LookIn:= _
xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False)
'###~~~~~~~~~~~Beginn der SUCHEN~~~~~~~~~~~~###
'NEUE SUCHE PW
'Tag1 als Zeile definieren
Set PW_Tag1 = Selection.Find(What:=PW_Tag1.Value, after:=ActiveCell, LookIn:= _
xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=False)
ActiveSheet.Cells(PW_Tag1.Row + 1, PW.Column).Select
ActiveSheet.Range(Selection, ActiveSheet.Cells(Selection.Row + 95, Selection.Column)).Select
Selection.Copy
Sheets("PW").Select
ActiveSheet.Range("A:X").Select
'Set Eingabezeile = Selection.Find(What:=Anfang_Zeitraum, after:=ActiveCell, LookIn:= _
xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False)
'Eingabezeile wird kein Wert zugewiesen
Set Eingabezeile = Selection.Find(What:=Anfang_Zeitraum.Value, after:=ActiveCell, LookIn:= _
xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=False)
Set PW_Eingabespalte_Tag1 = Selection.Find(What:=PW_Tag1.Value, after:=ActiveCell, LookIn:= _
xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=False)
ActiveSheet.Cells(Eingabezeile.Row, PW_Eingabespalte_Tag1.Column).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
zuerst werden 96 Werte kopiert, die dann im Blatt "PW" in der richtigen Stelle eingefügt werden sollen.
Die Spalte wird richtig erkannt, allerdings nicht aber die Zeile, in der das Kopierte eingefügt werden soll.
Bei der Überwachungsfunktion spuckt es nach folgendem Schritt für Eingabezeile immer "Nothing" aus,
obwohl für Anfang_Zeitraum der richtige Wert eingelesen wurde.
Set Eingabezeile = Selection.Find(What:=Anfang_Zeitraum.Value, after:=ActiveCell, LookIn:= _
xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=False)
Das hieße ja, dass er den Wert (Anfang_Zeitraum) in dem selektierten Bereich einfach nicht findet, oder?
aber warum?
der Zeitraum ist eine Reihe von Viertelstunden, also
00:15
00:30
00:45
01:00
01:15
...
die Variable Anfang_Zeitraum ließt dementsprechend 00:15 aus.
Egal wie ich Anfang_Zeitraum definiere, ob als Range, Variant oder Double (weil 00:15 als 1,04166666E-02 gelesen wird), es will einfach nichts finden -.-
Das schlimmste:
ein paar Zeilen darüber funktioniert es bei:
Set PW_Tag1 = Selection.Find(What:=PW_Tag1.Value, after:=ActiveCell, LookIn:= _
xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=False)
was habe ich hier nur übersehen ?