AW: Befüllung Tabelle
11.11.2019 22:36:19
Piet
Hallo Laura
prüfe bitte mal in einer Kopie Datei was dieser Code macht? Ich bin mir nicht sicher ob er richtig funktioniert? Formeln sind nicht meine starke Seite! Zwei Dinge sind mir noch unklar:
Ich weiss nicht was beim Ergebnis rauskommen soll, eine Zahl evtl. als Tage, Monate, oder eine Zeitangabe? Das zweite Sache ist die Zahl 5 in der Formel. Ist das immer eine konstante Zeile, die 5? Bleibt es die fünfte? Oder ist damit ActiveCell, als fortlaufende Zeile bis LastZell gemeint? Das 2. Makro geht von der zweiten Variante aus.
Wenn es Tage sein sollen muss der Round Befehl zum Auf- Abwerten bleiben. Wenn ein Datum rauskommen soll musst du zum Testen die Befehle mit CDate() aktivieren. İn dem Fall das ' Zeichen vor dem Befehl entfernen, und den anderen Befehl deaktivieren. Leider kann ich aus der Ferne nur wenig helfen...
mfg Piet
Sub Auto_ausfüllen()
Dim AC As Range, lz1 As Long
Dim Laufzeit As Variant
'LastZelle in Spalte A suchen
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
lz1 = 20 '** nur zum Testen
'Schleife zum Auto ausfüllen
For Each AC In Range("A2:A" & lz1)
If AC.Value "" Then
'zuerst Laufzeit berechen wenn $T$4=G5
If Range("T4").Value = Cells(5, 7).Value Then
Laufzeit = Now - Cells(5, 3).Value 'oder so:
'Laufzeit = CDate(Now - Cells(5, 3))
Else
Laufzeit = Range("T5") - Range("R5") 'oder so:
'Laufzeit = CDate(Range("T5") - Range("R5"))
End If
Laufzeit = Round(Laufzeit, 2)
MsgBox Laufzeit '** nur zum Testen
'Normale Auswertung wie sie vorher war
If AC.Offset(0, 10) = "" Then _
AC.Offset(0, 10).Formula = "=C" & AC.Row & "+ AG$5"
If AC.Offset(0, 12) = "" Then _
AC.Offset(0, 12).Formula = "=D" & AC.Row & "+ AG$16"
End If
Next AC
End Sub
Sub Auto_ausfüllen_2_ACROW()
Dim AC As Range, lz1 As Long
Dim Laufzeit As Variant
'LastZelle in Spalte A suchen
lz1 = Cells(Rows.Count, 1).End(xlUp).Row
lz1 = 20 '** nur zum Testen
'Schleife zum Auto ausfüllen
For Each AC In Range("A2:A" & lz1)
If AC.Value "" Then
'zuerst Laufzeit berechen wenn $T$4=G5
'** diese Lösung wenn 5 = ActiveCell.Row ist!!
If Range("T4").Value = Cells(AC.Row, 7).Value Then
Laufzeit = Now - Cells(AC.Row, 3) 'oder so:
'Laufzeit = CDate(Now - Cells(AC.Row, 3))
Else
Laufzeit = Cells(AC.Row, "T") - Cells(AC.Row, "R") 'oder
'Laufzeit = CDate(Cells(AC.Row, "T") - Cells(AC.Row, "R"))
End If
Laufzeit = Round(Laufzeit, 2)
MsgBox Laufzeit '** nur zum Testen
'Normale Auswertung wie sie vorher war
If AC.Offset(0, 10) = "" Then _
AC.Offset(0, 10).Formula = "=C" & AC.Row & "+ AG$5"
If AC.Offset(0, 12) = "" Then _
AC.Offset(0, 12).Formula = "=D" & AC.Row & "+ AG$16"
End If
Next AC
End Sub