Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1004to1008
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

Wenn in Zelle folgender String, dann

Wenn in Zelle folgender String, dann
06.09.2008 01:08:00
mehmet
Hallo Forum,
In Spalte G4:G92 sind viele kodierte Zeichenfolgen.
Fest steht aber, dass diese zu erkennen sind, z.B.
in Zelle G4: METAR EKAH 052150Z AUTO 12005KT 9999NDV DZ OVC080/// 15/14 Q1005=
in Zelle G5: METAR ESSA 051940Z 20006KT CAVOK 11/10 Q1006 NOSIG=
und so weiter... bis G92.
Kann man mittels Makro bestimmte stellen die Schriftfarbe ändern?
z.B. soll in G4 die Zeichenfolgen 052150Z farblich Formatiert sein. D.h., dass dieser String 2Zahlen+4Zahlen+Buchstabe Z hat.
Es sollen also die 2Zahlen blau sein (hier: 05).
Weiter sollen die 4Zahlen rot sein (hier: 2150).
Buchstabe Z soll in grün sein.
Der String ist immer erkennbar am Ende mit Z.
in G5 sollte dann 05 wieder blau sein und 1940 rot und Z grün sein.
Diese Abfrage bzw. Formatierung mittels Schleife dann bis G92.
Es handelt sich hier um eine Wetterabfrage (Wettermeldung), die besser dargestellt werden soll.
Dank und Gruss
mehmet

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn in Zelle folgender String, dann
06.09.2008 07:55:12
Tino
Hallo,
so müsste es gehen.
Modul Modul1
Option Explicit 
 
Sub test() 
Dim lngSt As Long 
Dim rZelle As Range 
 
For Each rZelle In Range("G4:G92") 
    With rZelle 
        lngSt = InStr(.Value, "Z ") - 6 
         .Characters(Start:=lngSt, Length:=2).Font.ColorIndex = 5 
        lngSt = lngSt + 2 
         .Characters(Start:=lngSt, Length:=4).Font.ColorIndex = 3 
        lngSt = lngSt + 4 
         .Characters(Start:=lngSt, Length:=1).Font.ColorIndex = 4 
    End With 
Next rZelle 
 
End Sub 


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Wenn in Zelle folgender String, dann
06.09.2008 10:58:16
mehmet
Super Tino,
es klappt.
Kann ich auch bestimmte Wörter hervor heben wie:
FEW, SCT, BKN oder OVC in blau.
Und wenn die nachfolgende Zahl z.B. OVC080 zeigt, dass diese Zahl (wenn kleiner als 010) dann rot wird.
Dank und Gruss
mehmet
AW: Wenn in Zelle folgender String, dann
06.09.2008 11:28:00
Tino
Hallo,
teste mal
Option Explicit
 
Sub test()
Dim lngSt As Long
Dim rZelle As Range
Dim strTemp As String
Dim SuchWert As String
 
For Each rZelle In Range("G4:G92")
    With rZelle
        lngSt = InStr(.Value, "Z ") - 6
         .Characters(Start:=lngSt, Length:=2).Font.ColorIndex = 5
        lngSt = lngSt + 2
         .Characters(Start:=lngSt, Length:=4).Font.ColorIndex = 3
        lngSt = lngSt + 4
         .Characters(Start:=lngSt, Length:=1).Font.ColorIndex = 4
    
    'FEW, SCT, BKN oder OVC 
    If InStr(.Value, "FEW") > 0 Then
     SuchWert = "FEW"
    ElseIf InStr(.Value, "OVC") > 0 Then
     SuchWert = "OVC"
    ElseIf InStr(.Value, "SCT") > 0 Then
     SuchWert = "SCT"
    ElseIf InStr(.Value, "BKN") > 0 Then
     SuchWert = "BKN"
    Else
     SuchWert = ""
    End If
        If InStr(.Value, SuchWert) > 0 And SuchWert > "" Then
           strTemp = Right$(.Value, Len(.Value) - InStr(.Value, SuchWert) - 2)
           strTemp = Left$(strTemp, InStr(strTemp, "/") - 1)
            
            If strTemp < 10 Then
             lngSt = InStr(.Value, SuchWert & strTemp)
             .Characters(Start:=lngSt, Length:=3).Font.FontStyle = "Fett"
             .Characters(Start:=lngSt, Length:=Len(SuchWert & strTemp)).Font.ColorIndex = 3
            End If
        
        End If
    
    End With
Next rZelle
 
End Sub


Gruß Tino

www.VBA-Excel.de


Anzeige
AW: Wenn in Zelle folgender String, dann
06.09.2008 11:35:00
mehmet
Hallo Tino,
Fehlermeldung:
Laufzeitfehler '13':
Typen unverträglich
Gruss
mehmet
AW: Wenn in Zelle folgender String, dann
06.09.2008 11:45:00
mehmet
sorry 8-)
an dieser Stelle:
If strTemp < 10 Then
Gruss
mehmet
AW: Wenn in Zelle folgender String, dann
06.09.2008 11:59:15
Tino
Hallo,
liegt wohl an der Office Version.
ersetze mal durch.
If CLng(strTemp) < 10 Then
Gruß Tino
AW: Wenn in Zelle folgender String, dann
06.09.2008 18:38:00
mehmet
Hallo Tino,
sorry, wieder Fehlermeldung an dieser Stelle:
strTemp = Left$(strTemp, InStr(strTemp, "/") - 1)
Laufzeitfehler '5':
Ungültiger Prozeduraufruf oder ungültiges Argument.
Gruss
mehmet
AW: Wenn in Zelle folgender String, dann
06.09.2008 18:48:55
Tino
Hallo,
lade mal eine Tabelle hoch.
Gruß Tino
AW: Wenn in Zelle folgender String, dann
06.09.2008 21:09:00
mehmet
Tino, du bist Super.
Dank dir.
Ich würde gern an Hand deinem Beispiel Lösung bestimmte Elemente Highlighten.
Wenn kleiner gleich OVC002 kommt, wenn grösser gleich ?35KT kommt, wenn die Buchstben TS TSRA BCFG FZFG FZRA.
Leider ist mir dies nicht ganz Verständlich da es nicht kommentiert ist.
Könntest Du mir bitte das letzte mal aushelfen.
Du bist Super, Dank dir.
Herzliche Grüsse
mehmet 8-)
AW: Wenn in Zelle folgender String, dann
06.09.2008 21:27:03
Tino
Hallo,
beschreibe mal genauer was du meinst, kann eben nicht so ganz folgen.
Gruß Tino
Anzeige
AW: Wenn in Zelle folgender String, dann
06.09.2008 22:14:01
mehmet
Hallo Tino,
Beispiel:
Code: KEWR 061751Z 12008KT 10SM OVC009 26/23 A2982=
Wenn OVC009 kleiner/gleich OVC002 ist, dann rot.
Code: LTBA 061750Z 04011KT CAVOK 24/17 Q1015 NOSIG=
Wenn 04011KT (also die Zahlen 11) grösser 35KT, dann rot.
Code: METAR UMMM 061800Z 15002MPS 5000 BR BKN100 22/18 Q1013 12000060 NOSIG RMK QFE739=
Wenn die Buchstaben (hier: BR) kommen, dann rot (auch rot, wenn die Buchatben TS TSRA BCFG FZFG FZRA kommen).
Code: METAR DTTA 061800Z 20019G29KT 7000 -SHRA SCT026 SCT030CB BKN093 29/17 Q1014 CB. NE .N TEMPO 4000 TS SHRA=
Wenn die Buchstaben 20019G29KT, also die 19G grösser/gleich 30G, dann rot
Code: METAR LDZA 061800Z 24004KT CAVOK 26/16 Q1010 NOSIG=
Wenn die Zahlen 26/16 ganz beianander (-+2) sind rot. Z.B. 15/14 oder 3/4 oder 18/17 oder 13/13.
Code: UUDD 061640Z 061803 18004MPS 3000 BR SCT025 SCT030CB TEMPO 1803 0500 FG VV004 PROB40 TEMPO 1803 TSRA=
Wenn hinter einer 4 stellingen Zahl eine 4 stellige Zahlenfolge kommt, dann die zweite Zahlenreihe rot, wenn kleiner/gleich 500. Hier: TEMPO 1803 0500 FG.
(Nur zum Verständnis: also Temporär 1800Uhr bis 0300Uhr 0500meter Sicht wegen Nebel).
Ich hoffe, dass ich mich Verständlich ausdrücken konnte.
Ich Danke Dir.
Gruss
Mehmet
Anzeige
AW: Wenn in Zelle folgender String, dann
06.09.2008 23:13:00
Tino
Hallo,
einen Teil habe ich mal angefangen, muss aber jetzt mal schluss machen, sehen schon keinen Code mehr.
Vieleicht passt der größte Teil schon.
https://www.herber.de/bbs/user/55228.xls
Gruß Tino
AW: Wenn in Zelle folgender String, dann
06.09.2008 23:23:00
mehmet
Was soll ich sagen 8-)
ich Danke dir herzlich
Gruss
mehmet

379 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige