Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Formeln VBA pro Zeile
#1
Guten Morgen!

Ich habe einige Formeln und Bedingte Formatierungen in den VBA Bereich meiner Excel Mappe geschrieben. Dabei soll sich der Code jeweils für die Zeilen 7 – 21 und 28  - 67 wiederholen. In meinem Code sieht man die Formeln & Bedingten Formatierungen für eine Zeile. Lässt sich sich nun eine Art Variable erstellen, welche den Folgenden Code für die Zeilen 7 – 21, bzw. 28 - 67 anpasst? Also für Zeile 8 würde aus C7 z.B. C8 werden usw...

Kann mir vorstellen, dass es eine clevere Lösung gibt als einfach nur den Code X-Mal zu kopieren und jedes mal nur die Zeilenzahl zu ändern, vor allem wird der VBA-Code dadurch ja wahnsinnig lang.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "C7" Then
Worksheets("Mappe1").Range("H7").Value = 0
End If
If Target.Address(0, 0) = "H7" Or Target.Address(0, 0) = "C7" Then
Worksheets("Mappe1").Range("D7").Value = Range("C7") + Range("H7")
Worksheets("Mappe1").Range("I7") = Format(Range("C7"), "DD. MMM YYYY")
End If
If Worksheets("Mappe 1").Cells(7, 2) <> "" Then
   Worksheets("Mappe 1").Cells(7, 3).Interior.Color = RGB(255, 255, 204)     'Gelb
   Worksheets("Mappe 1").Range("E7:G7").Interior.Color = RGB(252, 213, 180)  'Orange
   Worksheets("Mappe 1").Range("H7").Interior.Color = RGB(242, 242, 242)     'Hellgrau
Else
   Worksheets("Mappe 1").Range("B7:H7").Interior.Color = RGB(191, 191, 191)  'Dunkelgrau
End If
End Sub

Die „normalen“ Bedingten Formatierungen möchte ich nicht verwenden, deshalb wird das ganze in den VBA Bereich geschrieben.
 
 
Danke mal wieder für euren Input!
Gruß!
Antworten Top
#2
Hallo,

eventuell so ...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long

For i = 7 To 21
    If Target.Address(0, 0) = "C7" Then
        Worksheets("Mappe1").Range("H7").Value = 0
    End If
    If Target.Address(0, 0) = "H7" Or Target.Address(0, 0) = "C7" Then
        Worksheets("Mappe1").Range("D" & i).Value = Range("C" & i) + Range("H7")
        Worksheets("Mappe1").Range("I" & i) = Format(Range("C" & i), "DD. MMM YYYY")
    End If
    
    If Worksheets("Mappe 1").Cells(i, 2) <> "" Then
       Worksheets("Mappe 1").Cells(i, 3).Interior.Color = RGB(255, 255, 204)     'Gelb
       Worksheets("Mappe 1").Range("E" & i & ":G" & i).Interior.Color = RGB(252, 213, 180)  'Orange
       Worksheets("Mappe 1").Range("H" & i).Interior.Color = RGB(242, 242, 242)     'Hellgrau
    Else
       Worksheets("Mappe 1").Range("B" & i & ":H" & i).Interior.Color = RGB(191, 191, 191)  'Dunkelgrau
    End If
Next i
End Sub
Analog dazu, den anderen Range-Bereich

PS es überlappt sich der Bereich Range("B" & i & ":H" & i) und Range("E" & i & ":G" & i) der Bereich wird komplett Dunkelgrau ... da mal schauen !
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • diving_excel
Antworten Top
#3
Das heißt mit "Dim i as Long" und der anschließenden Ergänzung "i" wird die Zeilenzahl angepasst? Wieder was gelernt :)

Lässt sich noch einstellen, dass für jede entsprechende Zeile der Code erst angewandt wird wenn in der jeweiligen Zeile in Spalte C ein Eintrag vorgenommen wird? Aktuell wird zum Beispiel durch setzen eines Eintrags in C7 in Spalte D im Bereich D7:D21 immer eine 0 eingetragen da die jeweilige Zelle in Spalte C noch leer ist. Der jeweilige Code für die entsprechende Zeile soll allerdings erst ausgeführt werden wenn in Spalte C ein Eintrag vorgenommen wird.

Also:
Alle Formeln / Bedingten Formatierungen für Zeile 7 durchführen, wenn in C7 ein Eintrag steht
Alle Formeln / Bedingten Formatierungen für Zeile 8 durchführen, wenn in C8 ein Eintrag steht
Alle Formeln / Bedingten Formatierungen für Zeile 9 durchführen, wenn in C9 ein Eintrag steht 
[...]
Alle Formeln / Bedingten Formatierungen für Zeile 21 durchführen, wenn in C21 ein Eintrag steht 

Danke & Gruß!
Antworten Top
#4
Hallo,

eventuell so ...

sollte die erste Bedingung auch vom Wert in Spalte C abhängig sein, dann die neue If-Zeile einfach unterhalb von 'For i = ' verschieben.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long

For i = 7 To 21

   If Target.Address(0, 0) = "C7" Then
       Worksheets("Mappe1").Range("H7").Value = 0
   End If
   
If Worksheets("Mappe1").Range("C" & i).Text <> "" Then ' <-- neue Zeile
   If Target.Address(0, 0) = "H7" Or Target.Address(0, 0) = "C7" Then
       Worksheets("Mappe1").Range("D" & i).Value = Range("C" & i) + Range("H7")
       Worksheets("Mappe1").Range("I" & i) = Format(Range("C" & i), "DD. MMM YYYY")
   End If
   
   If Worksheets("Mappe 1").Cells(i, 2) <> "" Then
      Worksheets("Mappe 1").Cells(i, 3).Interior.Color = RGB(255, 255, 204)     'Gelb
      Worksheets("Mappe 1").Range("E" & i & ":G" & i).Interior.Color = RGB(252, 213, 180)  'Orange
      Worksheets("Mappe 1").Range("H" & i).Interior.Color = RGB(242, 242, 242)     'Hellgrau
   Else
      Worksheets("Mappe 1").Range("B" & i & ":H" & i).Interior.Color = RGB(191, 191, 191)  'Dunkelgrau
   End If
End If
Next i
End Sub

Um das genauer und effektiver zu machen, müsste man die Datei und den genauen Ablauf kennen. "Bedingte Formatierungen" werden da nicht eingestellt.
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • diving_excel
Antworten Top
#5
Danke, hat mal wieder sehr geholfen!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste