Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1104to1108
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
Inhaltsverzeichnis

Summe in VBA

Summe in VBA
Uwe
Hallo,
nicht, das ich jetzt schon wieder ein Problem hätte... Nun denn. Ich nutze eine Prozedur, um je nach Wochentag eine vorgegebene Stundenzahl (Mo-Do = 8:00 Std, Fr = 7:00 Std, Sa = 0:00 Std, So = 0:00 Std) in den Zellen "D9:D39" auszugeben. Soweit klappt das noch.
Jetzt aber besteht die Aufgabe darin, vom Wert in den Zellen "D9:D39" den Wert in Zellen "K9:K39", sowie den Wert in Zellen "M9:M39" abzuziehen.
Wie aber geht das?
Besten Dank für Eure Hilfe
Uwe
PS: Hier einfach mal das, was bisher funktioniert:
Sub Arbeitszeit_TVöD()
Dim rng As Range
Range("D9:D39").ClearContents 'Zellen erst mal leermachen
For Each rng In Me.Range("A9:A" & Me.Cells(Rows.Count, 1).End(xlUp).Row)
Select Case Weekday(rng, 2) 'Wochentag steht in Spalte 2
Case 1 To 4 'Wenn Mo - Do dann
rng.Offset(0, 3) = TimeSerial(8, 0, 0)
Case 5 'Wenn Fr dann
rng.Offset(0, 3) = TimeSerial(7, 0, 0)
Case Else
End Select
Next
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Summe in VBA
23.09.2009 16:44:03
fcs
Hallo Uwe,
du kanst die Spalten K und M als Offset zu rng festlegen oder per Cells mit rng.Row als Zeile.
Gruß
Franz
Sub Arbeitszeit_TVöD()
Dim rng As Range
Range("D9:D39").ClearContents 'Zellen erst mal leermachen
For Each rng In Me.Range("A9:A" & Me.Cells(Rows.Count, 1).End(xlUp).Row)
Select Case Weekday(rng, 2) 'Wochentag steht in Spalte 2
Case 1 To 4 'Wenn Mo - Do dann
rng.Offset(0, 3) = TimeSerial(8, 0, 0) - rng.Offset(0, 10).Value - rng.Offset(0, 12). _
Value
'rng.Offset(0, 3) = TimeSerial(8, 0, 0) - Me.Cells(rng.Row, 11).Value - Me.Cells(rng.Row,  _
13).Value
Case 5 'Wenn Fr dann
rng.Offset(0, 3) = TimeSerial(7, 0, 0) - rng.Offset(0, 10).Value - rng.Offset(0, 12). _
Value
'rng.Offset(0, 3) = TimeSerial(8, 0, 0) - Me.Cells(rng.Row, 11).Value - Me.Cells(rng.Row,  _
13).Value
Case Else
End Select
Next
End Sub

Anzeige
AW: Summe in VBA
24.09.2009 09:58:01
Uwe
Hallo Franz!
Leider funktionieren beide Lösungsansätze nicht. Ich gehe mal davon aus, das die schon richtig sind, ich aber doch dabei etwas übersehe...
Danke trotzdem schon mal.
Uwe
AW: Summe in VBA
24.09.2009 10:02:45
Wolli
Hallo Uwe,
hast Du versucht, die umgebrochenen Zeilen wieder zurückzubauen?
aus ... ... rng.Offset(0, 12). _
Value
wird ... ... rng.Offset(0, 12).Value
Das verhunzt leider die Forensoftware manchmal.
Gruß, Wolli
AW: Summe in VBA
24.09.2009 11:37:10
Uwe
Hallo Wolli,
in dem Punkt bin ich mir sicher, das richtig gemacht zu haben. Der Unterstrich bedeutet ja innerhalb der VBA einfach "Zeilenumbruch"...
Trotzdem Danke
Gruß
Uwe
Anzeige
AW: Summe in VBA
24.09.2009 11:41:25
fcs
Hallo Uwe,
wen du mit verbundenen Zellen arbeitest, dann gibt Problem. Wenn ich mich recht erinnere, dann dann ist die Offset-Variante von verbundenen Zellen gar nicht begeistert.
Damit die Rechnung funktioniert müssen die Werte in den Spalten K und M auch Zeitwerte sein, also kein Text oder Dezimalangaben von Stunden.
Falls doch, dann müssen die Werte in der Formel entsprechend umgerechnet werden.
Bei Zeit als Text mit der Funktion Timevalue bei Stundne als Dezimalzahl muss du den Wert durch 24 dividieren.
Gruß
Franz

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige