Thema Datum  Von Nutzer Rating
Antwort
Rot Prozedur starten wenn Zelle beschrieben
03.08.2017 07:52:44 DisPater
NotSolved
03.08.2017 08:33:29 Ben
NotSolved

Ansicht des Beitrags:
Von:
DisPater
Datum:
03.08.2017 07:52:44
Views:
1006
Rating: Antwort:
  Ja
Thema:
Prozedur starten wenn Zelle beschrieben

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.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Prozedur starten wenn Zelle beschrieben
03.08.2017 07:52:44 DisPater
NotSolved
03.08.2017 08:33:29 Ben
NotSolved