Bei Verlassen einer Zelle Aktion per Makro ausführen
#1
Guten Morgen, Excelbeführworter,

ich betreibe mit meinen Kollen eine Excel Datei (2013), in der Vorgänge in der Art einer Datenliste erfasst werden.
Spalte A: Eingangsdatum wird manuell erfasst.
In Spalte F wird bei Eingangsdatum <>"" eine fortlaufende Nummer erzeugt. 
Etliche andere Spalten: (interessieren hier nicht)

Jetzt kommt es vor, dass unachtsame Kollegen in irgendeiner anderen Spalte eine Sortirung mit dem Autofiltersymbol veranlassen, ohne vorher die Formeln in Festwerte umzuwandeln.
Ich würde nun gerne ein Macro installieren, welches immer beim Verlassen der Zelle in Spalte A (Eingangsdatum manuell) in der Zelle der Spalte F die erzeugte fortlaufende Nummer in einen Festwert umwandelt.

das eigentliche Umwandeln der Formel in eine Zahl habe ich so gelöst (Macroaufzeichnung des manuellen Vorgans):

Sub Formel_umwandeln()

'
' Formel_umwandeln Makro
'
    Range("F415").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

Aber mir fehlt das Können, den Vorgang an das Verlassen der Zelle A zu koppeln.

Ich wäre Dankbar für Eure Hilfe.

MFG
Top
#2
Hallo,

folgender Code kommt in das schon vorhandene VBA-Modul des entsprechenden Tabellenblattes:
Private Sub Worksheet_Change(ByVal Target As Range)
 With Target.Cells(1)
   If .Column = 1 Then
     If IsDate(.Value) Then
       With .Offset(0, 5)
         If .HasFormula Then
           .Value = .Value
         End If
       End With
     Else
       '.Offset(0, 5).Formula = "" ' wieder die Formel eintragen
     End If
   End If
 End With
End Sub
Gruß Uwe
Top
#3
Danke Uwe,
ich probier das nachher gleich mal aus.
Top
#4
Danke nochmal, Uwe, 

das Ding funktioniert.
Ich habe nur noch nicht kapiert, an welcher Stelle die neue fortlaufende Nummer erzeugt wird. Ich sehe keine Formel oder Ausdruck, die den vorherigen Wert um 1 erhöht.

Das gleiche Macro mit Änderung würde ich jetzt gerne auch noch an einer anderen Stelle benützen:
In der Zelle der Spalte Y wird ein Wert aus einer Datenmatrix gesucht, abhängig von einem Mitarbeiternamen in der Zelle der Spalte V.
Die Formel dort lautet: =WENNFEHLER(WENN(I418="In";INDEX(Stammdaten!$D$3:$H$101;VERGLEICH(V418;Fachberater;0);VERGLEICH(A418;Stammdaten!$D$2:$I$2;1));Q418);"x")
Die Gebietszuordnung von AD-Mitarbeitern kann sich über die Jahre ändern. Das zur Zeit der Erfassung richtige Gebiet soll aber in der Tabelle erhalten bleiben. Deswegen soll auch hier die Formel in einen Festwert umgewandelt werden.

Diese Formel bekomme ich wohl nicht so elegant in das Macro eingearbeitet?
Top
#5
(19.04.2018, 12:36)christo_f schrieb: Ich habe nur noch nicht kapiert, an welcher Stelle die neue fortlaufende Nummer erzeugt wird. Ich sehe keine Formel oder Ausdruck, die den vorherigen Wert um 1 erhöht.
Das weiß ich auch nicht.  :17:

(19.04.2018, 12:36)christo_f schrieb: Das gleiche Macro mit Änderung würde ich jetzt gerne auch noch an einer anderen Stelle benützen:
In der Zelle der Spalte Y wird ein Wert aus einer Datenmatrix gesucht, abhängig von einem Mitarbeiternamen in der Zelle der Spalte V.
Private Sub Worksheet_Change(ByVal Target As Range)
 With Target.Cells(1)
   If .Column = 1 Then
     With .Offset(0, 5)
       .Value = .Value
     End With
   ElseIf .Column = 22 Then
     With .Offset(0, 3)
       .Value = .Value
     End With
   End If
 End With
End Sub

Gruß Uwe
Top
#6
Danke Uwe,
ich melde mich am Montag wieder, ob es geklappt hat.
Top
#7
Haallo UWE,
bin total begeistert,
klappt, vielen Dank.
Top


Gehe zu:


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