Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
944to948
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
VBA Code für Formel in Zeile C
29.01.2008 15:18:42
Fred
Hallo zusammen
Ich suche eine MakroLösung und hoffe mir kann jemand Helfen.
Ich berechne die Zeit in Zeile C. Anfangszeit wird immer in Zeile ab A4 eingegeben und Ende der Zeit immer in Zeile ab B4. Die differenz davon wird in Zeile C abC4 mit Folgender Formel errechnet
=WENN(ODER(A4="";B4="");"";REST(B4-A4;1))
Leider giebt es oft Kollegen die dann auf alles löschen gehen und dann sind auch die Formeln gelöscht. Kann jemand ein VBA schreiben, welches die Funktion der Obigen Formel für Zeile C ausführt. Es würde auch reichen wenn Das Makro für C4 bis C100 gültig ist.
Grüße Fred

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code für Formel in Zeile C
29.01.2008 15:33:00
Rudi
Hallo,
nimm aus allen Zellen außer C4:C100 die Sperre und setze einen Blattschutz.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: VBA Code für Formel in Zeile C
29.01.2008 15:58:11
Chris
Servus,
oder so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim reihe As Long
If Target.Row  2 Or Target.Value = "" Then
Exit Sub
End If
If Target.Column = 2 And Target.Row >= 4 Then
reihe = Target.Row
If Range("A" & reihe) = "" Then
MsgBox "Geben Sie erst die Anfangszeit ein!", vbExclamation, "Eingabereihenfolge"
Range("B" & reihe).ClearContents
Exit Sub
Else
If Range("B" & reihe)  "" Then
Range("C" & reihe).FormulaR1C1 = "=MOD(RC[-1]-RC[-2],1)"
End If
End If
End If
End Sub


Gruß
Chris

Anzeige
AW: VBA Code für Formel in Zeile C
29.01.2008 17:45:00
Fred
Hallo Cris
Vielen Dank für Deine Antwort, klappt wirklich prima.Leider Habe ich jetzt sofort das nächste Problem, Dein Code verhindert leider meinen Code Der Darunter steht. . Leider werden meine UF jezt nicht mehr angezeigt. was müsste mann ändern damit beide Codes funktionieren

Private Sub Worksheet_Change(ByVal Target As Range)
Dim reihe As Long
If Target.Row  2 Or Target.Value = "" Then
Exit Sub
End If
If Target.Column = 2 And Target.Row >= 4 Then
reihe = Target.Row
If Range("A" & reihe) = "" Then
MsgBox "Geben Sie erst die Anfangszeit ein!", vbExclamation, "Eingabereihenfolge"
Range("B" & reihe).ClearContents
Exit Sub
Else
If Range("B" & reihe)  "" Then
Range("C" & reihe).FormulaR1C1 = "=MOD(RC[-1]-RC[-2],1)"
End If
End If
End If

Dieser Code Läuft jetzt nicht mehr
If Intersect(Target, Range("D4:D100")) Is Nothing Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
Select Case Target.Value
Case 2
Mechanisch.Show
Dim iRow As Integer
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "MA"
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case 9
Material.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "BWW"
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case 1
Elektrisch.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "EL"
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case 5
Produktionsbetrieb.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "BWK"
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case 6
Prozessrechner.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "BDE"
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case 10
Stofffluss.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "PRL"
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case 11
Transport.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "Kran"
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case "9/19"
UserForm0.Show
Case 13
ÄußereEinwirkungen.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "sonst"
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case 14
Belegschaft.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "BWK"
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case 15
Versuche.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "sonst"
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case 16
Walzenwechsel.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "ung."
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case 17
NichtBeschriebeneGründe.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "ung."
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case 51
Nutzungsnebenzeit.Show
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 5).Value = "Rüst"
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
Cells(iRow, 6).Value = "BWK"
Case Else
End Select
End Sub


Anzeige
AW: VBA Code für Formel in Zeile C
29.01.2008 17:53:00
Chris
Servus,
das müsste so funktionieren:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim reihe As Long
If Not Intersect(Target, Range("B4:B65536")) Is Nothing Then
reihe = Target.Row
If Range("A" & reihe) = "" Then
Range("B" & reihe).ClearContents
Exit Sub
Else
If Range("B" & reihe)  "" Then
Range("C" & reihe).FormulaR1C1 = "=MOD(RC[-1]-RC[-2],1)"
End If
End If
End If
'Hier dein Code drunter
End Sub


Ich hab die MsgBox rausgenomen, die macht mitunter Probleme beim Löschen.
Gruß
Chris

AW: VBA Code für Formel in Zeile C
29.01.2008 18:06:00
Fred
vielen Dank funzt prima

Anzeige
AW: Bitte o.T.
29.01.2008 18:09:00
Chris
.

AW: VBA Code für Formel in Zeile C
29.01.2008 20:10:46
Daniel
Hi
das einfachste wäre doch, die Formeln in den Zeilen C4:C100 wieder herzustellen, sobald du dies benötigst
einfach diesen Code:

Range("C4:C100").formular1c1local="WENN(ODER(ZS(-2)="""";ZS(-1)="""");"""";REST(ZS(-1)-ZS(-2);1))"


über all dort reinkopieren, wenn die Formeln wieder hergesellt sein müssen, also entweder im Makro vom WORKSHEET_CHANGE-Ereignis oder irgendwo in deinem Makro.
Gruß, Daniel

AW: kleine korrektur
29.01.2008 20:18:39
Daniel
so gehts:

Range("C4:C100").formular1c1local="=WENN(ODER(ZS(-2)="""";ZS(-1)="""");"""";REST(ZS(-1)-ZS(-2);1))"


Gruß, Daniel

Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige