Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Typen unverträglich

Forumthread: Typen unverträglich

Typen unverträglich
07.12.2025 13:11:45
Christian
Hallo,

es geht mir um folgende Datei, ich finde einfach den Fehler nicht, obwohl er mit Sicherheit nur etwas klitzekleines ist.
Ich wollte mir eigentlich nur schnell ein Makro schreiben dass zu den Zeiten in B3:G9 22 Minuten addiert und zu den Zeiten in H3:H9 5 Minuten.
Aber warum da jetzt plötzlich Typen unvertrglich sind, entzieht sich leider meinen VBA Kenntnissen.
Schaut doch bitte mal

Danke
Christian

https://www.herber.de/bbs/user/179783.xlsm
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Na - das kannst...
07.12.2025 13:20:37
Case
Moin Christian, :-)

... du nicht einfach auf einen Range anwenden. Entweder durch die Zellen schleifen, oder per Array verändern, oder per EVALUATE: ;-)

With Worksheets("Berechnung")

.Range("B3:G9").Value = Evaluate(.Range("B3:G9").Address & "+TIME(0,22,0)")
.Range("H3:H9").Value = Evaluate(.Range("H3:H9").Address & "+TIME(0,5,0)")
End With

Servus
Case
Anzeige
AW: Na - das kannst...
07.12.2025 13:21:57
Christian
Hallo Case,

vielen Dank, wieder was gelernt.

Christian
AW: Na - das kannst...
07.12.2025 13:22:38
Christian
sorry mein Beitrag habs mit Formeln berechnet und deine Antwort haben sich zeitlich überschnitten
Das wäre eine...
07.12.2025 14:20:56
Case
Moin Christian, :-)

... mögliche Array-Variante (bezogen auf dein Beispiel - aber ich würde EVALUATE bevorzugen): ;-)

Public Sub Main_Zeit_Plus()

Dim varArr As Variant
Dim lngCount1 As Long
Dim lngCount2 As Long
With Worksheets("Berechnung")
varArr = .Range("B3:H9").Value
For lngCount1 = 1 To UBound(varArr, 1)
For lngCount2 = 1 To UBound(varArr, 2)
If lngCount2 = 6 Then
varArr(lngCount1, lngCount2) = varArr(lngCount1, lngCount2) + TimeSerial(0, 22, 0)
Else
varArr(lngCount1, lngCount2) = varArr(lngCount1, lngCount2) + TimeSerial(0, 5, 0)
End If
Next lngCount2
Next lngCount1
.Range("B3:H9").Value = varArr
End With
End Sub

Servus
Case
Anzeige
Nur am...
08.12.2025 12:38:03
Case
Moin Christian, :-)

... Rande bemerkt - du könntest das auch mit Power Query lösen.

&#128514😜


Servus
Case
zweifelsohne, aber...
08.12.2025 14:22:22
Christian
warum, wenn das erstellen der Zeiten und das Ausdrucken genau dieses Bereiches schon mit VBA gelöst ist...

ok, konntest du nicht wissen.
Außerdem werde ich das nur temporär noch ein paar mal brauchen, so hab ich ein Modul, dass ich vorübergehend einfügen und dann einfach wieder löschen kann.
Anzeige
habs jetzt erstmal mit Formeln berechnet...
07.12.2025 13:20:52
Christian
... aber was da falsch gelaufen ist interessiert mich natürlich trotzdem
AW: Typen unverträglich
07.12.2025 13:32:31
RPP63
Moin!
So klitzeklein ist der Fehler nicht!
Du musst durch die Zellen iterieren:
Sub AddTimesFast()

Dim Zelle As Range
For Each Zelle In Range("B3:G9")
Zelle = Zelle + TimeSerial(0, 22, 0)
Next
End Sub

Es ginge auch, gleich mehrere Zellen zu ädern:
Sub versiv()

With Range("K1")
.Value = TimeSerial(0, 5, 0)
.Copy
Range("H3:H9").PasteSpecial Operation:=xlAdd
.ClearContents
End With
Application.CutCopyMode = False
End Sub


Gruß Ralf
Anzeige
AW: Typen unverträglich
07.12.2025 13:48:46
Christian
Hallo Ralf,

vielen Dank für deine Ausführungen.
Aber eine Verständnisfrage habe ich noch.
Warum der Umweg über K1? Kann ich den Wert nicht auch in einer Variable speichern und dann addieren?

Danke
Christian
AW: Typen unverträglich
07.12.2025 14:05:49
RPP63
Du musst bei dieser Methode den Zeitwert "irgendwie" in die Zwischenablage bringen.
Dies gelingt "unfallfrei" am besten durch Nutzung einer temporären Zelle.
Das xlAdd-Argument verträgt sich nicht mit Variablen.

Eine Alternative hat Dir ja Case bereits mittels Evaluate() gezeigt.

Gruß Ralf
Anzeige
AW: Typen unverträglich
07.12.2025 14:12:22
Christian
Hallo Ralf,

Das xlAdd-Argument verträgt sich nicht mit Variablen.

wieder was gelernt,
vielen Dank.

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige