Gerne würde ich folgende Problemstellung in das Forum einbringen:
Mit dem folgenden Makro werden zwei Nummern verglichen und bei Übereinstimmung der Planwert mit dem IST Wert im entsprechenden Monat überschrieben und "grün" formatiert.
Sub Uebernahme_IST_Werte() 'Kopiert Ist Werte aus HT_Ist Sheet in RollFor Sheet
Dim sSuchbedingungDE, sSuchbedingungFR, sSchalter, sFC, sIST, sISTorFC As String
Dim iLaufIst, iLaufFC, iStartZeileHT_Ist, iStartZeileFC, iEndZeileHT_Ist, iEndZeileFC, _
iStartSpalteHT_Ist, iISTorFCZeile, iISTorFCSpalte, iZaehler, iModQuartal, iModJahr As Integer
'Initialisierung
iZaehler = 0
iISTorFCZeile = 6 'Zeile mit Auswahlliste IST bzw FC
iISTorFCSpalte = 90 'Spalte Start Monate im Blatt RollFor
sISTorFC = "FC" 'FC hier bezieht sich auf die Liste mit IST oder FC Zeile 6 im Blatt " _
RollFor"
iStartZeileHT_Ist = 18 'Startzeile der PSP im Blatt HT_IST
iStartSpalteHT_Ist = 4 'Startspalte mit den Monatswerten im Blatt HT_IST
iStartZeileFC = 12 'Startzeile der PSP im Blatt RollFor
sIST = "HT_IST"
sFC = "RollFor"
sSuchbedingungDE = "Gesamtergebnis"
sSuchbedingungFR = "Resultat totale"
iZeile = iStartZeileHT_Ist
'Worksheet definieren
Set wFC = ThisWorkbook.Worksheets(sFC)
Set wIST = ThisWorkbook.Worksheets(sIST)
'Bestimmung der Endzeile im Worksheet IST
Do Until wIST.Cells(iZeile, 1) = sSuchbedingungDE Or wIST.Cells(iZeile, 1) = _
sSuchbedingungFR
iZeile = iZeile + 1
Loop
'Hier steht die Endzeile im Worksheet IST
iEndZeileHT_Ist = iZeile
'Bestimmung der Endzeile im Worksheet RollFor -> 1000ste Zeile ggf. anpassen!!!
For iZeile = 1000 To 1 Step -1
If Not wFC.Cells(iZeile, 2).Value = "" Then
iEndZeileFC = iZeile
Exit For
End If
Next
'Prüft ob IST eingestellt ist. Wenn FC, dann bricht er ab.
Do Until wFC.Cells(iISTorFCZeile, iISTorFCSpalte) = sISTorFC
iZaehler = iZaehler + 1
'Falls auf Quartalsbasis geändert wird "Mod 5" auskommentieren.
'iModQuartal = iZaehler Mod 5
iModJahr = iZaehler Mod 13
'Abfrage, ob Summenspalte. Wenn ja, dann nächste Spalte prüfen
'If Not iModQuartal = 0 Then
'Prüfe auf erfüllte Bedingungen
If Not iModJahr = 0 Then
For iLaufIst = iStartZeileHT_Ist To iEndZeileHT_Ist
'Für alle nicht leeren Zellen
If wIST.Cells(iLaufIst, 2).Value "" Then
For iLaufFC = iStartZeileFC To iEndZeileFC
'Vergleiche die PSP Werte
'Zweite Bedingung wenn nötig: And wIST.Cells(iLaufIst, 5).Value = _
wFC.Cells(iLaufFC, 4).Value
If wIST.Cells(iLaufIst, 2).Value = wFC.Cells(iLaufFC, 3).Value Then
'Schreibe Werte aus HT_Ist in FC rein
wFC.Cells(iLaufFC, iISTorFCSpalte).Value = wIST.Cells(iLaufIst, _
iStartSpalteHT_Ist + iZaehler - 1).Value / 1000
'Schriftfarbe
wFC.Cells(iLaufFC, iISTorFCSpalte).Font.Color = RGB(0, 153, 0)
End If
Next iLaufFC
End If
Next iLaufIst
End If
'End If
iISTorFCSpalte = iISTorFCSpalte + 1
Loop
End Sub
Ich würde noch gerne, dass wenn es keine Übereinstimmung gibt, der Planwert mit Null (0) überschrieben und die entsprechende Zelle als "Geschützt" formatiert wird.Ich habe es versucht, jedoch keine Lösung finden können, wie ich es am besten umsetze...
Ich bin über jede Hilfe, Hinweis sehr dankbar!
Beste Grüsse
Dip