Hallo,
eure Codes funktionieren zwar, aber ich möchte das in einen bestehenden Code einbauen. Den Code kann ich zwar Zeigen aber die Beispieldatei nicht.
Mit den Codes rund um Arrays kenn ich mich nicht aus und verwirren mich ein bisschen.
Aber hier mein eigentliches Problem:
Ich habe eine Range von Werten von Cells(2,1) bis Cells(LetzteZeile_Filterwerte,1) Das J kann variieren. ich fange also erstmal mit 2:
Code:
J=2
PSP_Filter_Wert = Sheets("PSP-Filter").Cells(j, 1).Value
Die Schleife I_Filter_Wert startet. Jetzt wird für jede Zelle (I_Filter_Wert, 4) geprüft ob der Wert
PSP_Filter_Wert in der Zelle enthalten ist also nicht nur 1:1 sondern ob es allgemein enthalten ist.
Code:
If InStr(Sheets("CN41N").Cells(i_Filter_Wert, 4), PSP_Filter_Wert) > 0 Then
So nach beenden der Schleife setze ich
PSP_Filter_Wert um eine Zelle runter und starte die Schleife neu
Das mache ich weil es für PSP_Filter_Wert eine Variable Anzahl an Werten gibt und ich alle abklappern muss. Das ganze geht dann bis zur letzten befüllten Zeile.
Warum kann ich nicht gleich abfragen ob irgend ein Wert vom Array:
PSP_Filter_Wert_Array in der Zelle (I_Filter_Wert, 4) enthalten ist?
Code:
If InStr(Sheets("CN41N").Cells(i_Filter_Wert, 4), PSP_Filter_Wert_Array) > 0 Then
Dann müsste ich die Schleife i_Filter_Wert nicht unnötig oft neubeginnen sondern müsste diese Schleife nur einmal abklappern.
Natürlich würde man dann die Range oder
PSP_Filter_Wert_Array immer neu definieren. irgendwie so:Code:
PSP_Filter_Wert_Array = Range(Sheets("PSP-Filter").Cells(2, 1), Sheets("PSP-Filter").Cells(LetzteZeile_Filterwerte, 1))
Sorry aber kann wegen Datenschutz keine Beispieldatei hochladen.
Hier der Code:
Code:
Sub Zeilen_kopieren_einfügen_CN41N()
Dim PSP_Filter_Wert As String
Dim i_Filter_Werte_Anzahl
Dim i_Filter_Wert As Integer
Dim LetzteZeile As Integer
Dim LetzteZeile_Filterwerte As Integer
Dim Anzahl_Filterwerte As Integer
Dim FilterNetzplan As String
Dim j As Integer
Dim k As Integer
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
Sheets("CN41N").Activate
LetzteZeile = Sheets("CN41N").Cells(Rows.Count, 1).End(xlUp).Row
LetzteZeile_Filterwerte = Sheets("PSP-Filter").Cells(Rows.Count, 1).End(xlUp).Row
Anzahl_Filterwerte = LetzteZeile_Filterwerte
k = 2
j = 2
FilterNetzplan = "nofilterrelevant"
GoTo 1
2:
j = j + 1
FilterNetzplan = "nofilterrelevant"
1:
PSP_Filter_Wert = Sheets("PSP-Filter").Cells(j, 1).Value
For i_Filter_Wert = 1 To LetzteZeile
If InStr(Sheets("CN41N").Cells(i_Filter_Wert, 4), PSP_Filter_Wert) = 0 And InStr(Sheets("CN41N").Cells(i_Filter_Wert, 4), "CC-") > 0 Then
FilterNetzplan = "nofilterrelevant"
End If
If InStr(Sheets("CN41N").Cells(i_Filter_Wert, 4), PSP_Filter_Wert) > 0 Then
FilterNetzplan = "filterrelevant"
Sheets("CN41N").Range(Cells(i_Filter_Wert, 1), Cells(i_Filter_Wert, 31)).Copy
Sheets("CN41N_Ziel").Cells(k, 1).PasteSpecial Paste:=xlValues
k = k + 1
End If
If FilterNetzplan = "filterrelevant" And InStr(Sheets("CN41N").Cells(i_Filter_Wert, 4), "CC-") = 0 Then
Sheets("CN41N").Range(Cells(i_Filter_Wert, 1), Cells(i_Filter_Wert, 31)).Copy
Sheets("CN41N_Ziel").Cells(k, 1).PasteSpecial Paste:=xlValues
k = k + 1
End If
Next i_Filter_Wert
If i_Filter_Wert = LetzteZeile + 1 And j <> Anzahl_Filterwerte Then
GoTo 2
End If
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub