Hallo zusammen,
ich habe ein Problem im VBA das ich zu lösen versuche, aber einfach nicht drauf komme wie ich das am besten anstellen soll. Folgendes habe ich geschrieben:
Sub Worksheet_Change(ByVal Target As Range)
'Schreibe Datum in Spalte Q und Uhrzeit in Spalte R wenn Änderung in Spalte K, Zeilenabhängig
If Not Intersect(Target, Range("k9:k47", "i9:i47")) Is Nothing And Target.Count = 1 Then
ThisWorkbook.Worksheets("Berechnungstool").Unprotect
'Schreibt Zellen in Variable zur späteren Ausgabe
strZelle = Target.Address
strPuffer = Cells(Target.Row, Target.Column - 2).Address
strt_FSRest = Cells(Target.Row, Target.Column + 10).Address
strT_FS = Cells(Target.Row, Target.Column + 11).Address
strA_RestFS = Cells(Target.Row, Target.Column + 12).Address
strt_SSRest = Cells(Target.Row, Target.Column + 13).Address
strT_SS = Cells(Target.Row, Target.Column + 14).Address
strA_RestSS = Cells(Target.Row, Target.Column + 15).Address
strt_Akt = Cells(Target.Row, Target.Column + 7).Address
strDatAkt = Cells(Target.Row, Target.Column + 6).Address
strAPlan_FS = Cells(Target.Row, Target.Column - 8).Address
strAPlan_SS = Cells(Target.Row, Target.Column - 7).Address
strRW_Band = Cells(Target.Row, Target.Column + 1).Address
strRW_Puffer = Cells(Target.Row, Target.Column - 1).Address
strRW_Total = Cells(Target.Row, Target.Column + 2).Address
strVerReal = Cells(Target.Row, Target.Column + 5).Address
strVerRealTot = Cells(Target.Row, Target.Column + 16).Address
intAPlan_FS = Worksheets("Berechnungstool").Range(strAPlan_FS).Value
intAPlan_SS = Worksheets("Berechnungstool").Range(strAPlan_SS).Value
'Schreibt Uhrzeit in Spalte R und Fülle Variable dblt_Akt für Berechnung der verleibenden Triebwerke
Worksheets("Berechnungstool").Range(strt_Akt).Value = Right(Now(), 8)
datt_Akt = Right(Now(), 8)
'Schreibt Datum in Spalte Q
Worksheets("Berechnungstool").Range(strDatAkt).Value = Date
datDatAkt = Date
'Berechnung Triebwerke verbleibend Frühschicht, Aufruf der Prozedur
Call TW_FS_Rest
'Berechnung Triebwerke verbleibend Spätschicht, Aufruf der Prozedur
Call TW_SS_Rest
'Berechnung Reichweite in Stunden
Call Reichweitenrechnung
'Berechne Reichweite Puffer in Stunden, addiere Reichweite Puffer und Band
Call Reichweitenrechnung_Total
'Umwandlung in Werte -> Zelladresse im Code anpassen!!!
ThisWorkbook.Worksheets("Berechnungstool").Range("N9:N47").Copy
Range("o9:o47").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'Sortierung Aufsteigend -> Zelladresse im Code anpassen!!!
'Arbeitsblatt schützen einfügen!!!
ThisWorkbook.Worksheets("Berechnungstool").Range("A8:AD47").Sort _
Key1:=Range("O8"), Order1:=xlAscending, _
Header:=xlYes
ThisWorkbook.Worksheets("Berechnungstool").Protect
Worksheets("Berechnungstool").Range(strZelle).Select
End If
End Sub
Im ursprünglichen Code erfolgt der Start der Prozedur sobald eine Änderung im Bereich K9:K47 erfolgt. Das hat soweit funktioniert und alles ist genau darauf aufgebaut. Nun möchte ich zusätlich noch einen Startpunkt einfügen der loslegt sobald eine Änderung im Bereich I9:I47 erfolgt. Ausgeführt wird hierbei der gleiche Code.
Grundsätzlich funktioniert die Routine, bzw. der Startpunkt. Problem ist nun, wenn ich im Bereich I9:I47 schreibe beziehen sich auch alle Zellvariablen auf diesen Startpunkt und meine Werte werden falsch aufgenommen.
Kennt jemand eine Lösung das mit einfachen Schritten zu verhindern?
Vielen Dank für die Hilfe
MfG
DisPater
PS: Ich bin absoluter VBA Anfänger und habe mit den Code über 2 Wochen mit viel Recherche zusammen gebastelt. Mit ist bewusst das er nicht perfekt ist und an vielen Stellen besser zu schreiben wäre.
|