Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Datumsangabe innerhalb einer Zelle formatieren
#1
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.
Antworten Top
#2
Zitat:Meine Versuche

Ich sehe keine.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#3
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
Antworten Top
#4
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#5
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.
Antworten Top
#6
Hallo, 19 

was läuft schief? Undecided

Right-Funktion...
Range.Characters-Eigenschaft (Excel)...

Hier mal ein Beispiel: 21

.xlsb   Format_Datum_kleiner_gleich_Heute_in_String_Fett_Rot_CEF.xlsb (Größe: 17,41 KB / Downloads: 3)
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • Marcel_K
Antworten Top
#7
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:
  • Marcel_K
Antworten Top
#8
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.
Antworten Top
#9
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:
  • snb
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste