Registriert seit: 24.02.2023
Version(en): Microsoft® Excel® für Microsoft 365 MSO (Version 2211 Build 16.0.15831.20098) 32 Bit
Hallo zusammen,
ich habe folgendes Problem:
Ich habe in einer Excel Datei Zellen, die mehrere Informationen enthalten. Die Zelle enthält Zahlen, Sonderzeichen und Buchstaben.
Die Abfolge der Informationen in den Zellen ist immer gleich.
Am Ende der Zelle ist eine Datumsangabe im Format "TT.MM.JJ" angegeben.
Diese Datumsangabe soll mit dem tagesaktuellen Datum verglichen werden.
Wenn das Datum in der Zelle bereits überschritten ist, soll ausschließlich das Datum in der Zelle fett markiert werden und die Schriftfarbe soll rot sein.
Meine Versuche dies in VBA anzuwenden sind leider kläglich gescheitert.
Hat da jemand vielleicht eine Idee?
Gruß und danke im Voraus.
Registriert seit: 29.09.2015
Version(en): 2030,5
Zitat:Meine Versuche
Ich sehe keine.
Registriert seit: 24.02.2023
Version(en): Microsoft® Excel® für Microsoft 365 MSO (Version 2211 Build 16.0.15831.20098) 32 Bit
VBA sagt mir: "Fehler beim Kompilieren: Argument ist nicht optional"
Option Explicit
Sub Datumsprüfung()
Dim Tx As String, pos As Integer
Dim c As Range
Dim dtHeute As Date
dtHeute = Date
For Each c In Range(Cells(1, 10), Cells(50, 10))
Tx = c.Value
If pos Then
If Right(8) Like "##.##.##" And Right(8) <= dtHeute Then
c.Characters(pos, 8).Font.Bold = True
c.Characters(pos, 8).Font.Color = vbRed
End If
End If
Next c
End Sub
Registriert seit: 29.09.2015
Version(en): 2030,5
24.02.2023, 13:02
(Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2023, 13:04 von snb.)
Bitte, verwende Code Tags !!
z.B.
Code:
with Cells(14, 2).Characters(Len(Cells(14, 2)) - 8, 9).Font
.Bold = True
.ColorIndex = 6
end with
Registriert seit: 24.02.2023
Version(en): Microsoft® Excel® für Microsoft 365 MSO (Version 2211 Build 16.0.15831.20098) 32 Bit
Also dann hier noch mal mit Code Tag.
Code:
Option Explicit
Sub Datumsprüfung()
Dim Tx As String, pos As Integer
Dim c As Range
Dim dtHeute As Date
dtHeute = Date
For Each c In Range(Cells(1, 10), Cells(50, 10))
Tx = c.Value
If pos Then
If Right(8) Like "##.##.##" And Right(8) <= dtHeute Then
c.Characters(pos, 8).Font.Bold = True
c.Characters(pos, 8).Font.Color = vbRed
End If
End If
Next c
End Sub
Weiter bin ich immer noch nicht. Wäre nett, wenn mir jemand sagen könnte wo der Fehler liegt.
00202
Nicht registrierter Gast
Hallo,
was läuft schief?
Right-Funktion...
Range.Characters-Eigenschaft (Excel)...
Hier mal ein Beispiel:
![21 21](https://www.clever-excel-forum.de/images/smilies/pack 2/21.gif)
[attachment=47257]
Folgende(r) 1 Nutzer sagt Danke an Gast für diesen Beitrag:1 Nutzer sagt Danke an Gast für diesen Beitrag 28
• Marcel_K
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
Code:
Sub Datumspruefung()
Dim lngPos As Long
Dim rngC As Range
Dim strTx As String
For Each rngC In Range(Cells(1, 10), Cells(50, 10))
strTx = Right(rngC.Value, 8)
If strTx Like "##.##.##" Then
If CDate(strTx) <= Date Then
lngPos = Len(rngC.Value) - 7
rngC.Characters(lngPos, 8).Font.Bold = True
rngC.Characters(lngPos, 8).Font.Color = vbRed
End If
End If
Next rngC
End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Marcel_K
Registriert seit: 24.02.2023
Version(en): Microsoft® Excel® für Microsoft 365 MSO (Version 2211 Build 16.0.15831.20098) 32 Bit
Vielen Dank für euren Code.
Ich wusste nicht so recht mir der Right-Funktion umzugehen.
Die Range habe ich noch entsprechend ausgeweitet
Code:
Option Explicit
Public Sub Datumspruefung()
Dim rngCell As Range
With Tabelle1
For Each rngCell In Range(Cells(1, 10), Cells(100, 21))
If Right(rngCell.Value, 8) Like "##.##.##" And Right(rngCell.Value, 8) <= CDate(Date) Then
With rngCell.Characters(Len(rngCell) - 7, 8).Font
.Bold = True
.Color = vbRed
End With
End If
Next rngCell
End With
End Sub
Habe mich an @Case Code gehalten.
Ich muss mich auf jeden Fall mehr mit VBA beschäftigen. Bin noch neu in der Welt des codens.
Registriert seit: 26.09.2022
Version(en): 2019
Moin,
warum eigentlich überhaupt Textverarbeitung in einer Tabellenkalkulation. Wenn du ein Datum in den letzten 8 Stellen eines Textes hast, solltest du diese Information als Datum in ein neues Feld schreiben. Erst dann kannst du auswerten, filtern, sortieren, Termine berechnen etc.
Spar dir also den Quatsch, Teilstrings in Zellen zu bearbeiten und fange mit Datenverarbeitung an.
Viele Grüße
derHöpp
Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:1 Nutzer sagt Danke an derHoepp für diesen Beitrag 28
• snb