Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Teile eines Strings farbig darstellen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Teile eines Strings farbig darstellen (6163 mal gelesen)
Hofe
Mitglied
Werkzeugmacher


Sehen Sie sich das Profil von Hofe an!   Senden Sie eine Private Message an Hofe  Schreiben Sie einen Gästebucheintrag für Hofe

Beiträge: 439
Registriert: 12.01.2008

Computer: Aldi
Schreibtisch: Ikea
Werkbank: Baumarkt
Software:
1967-2021, viele Updates und SP's, aber sicher nicht alle, deswegen immer wieder Sicherheitslücken

erstellt am: 15. Okt. 2012 18:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

'N Abend zusammen,

die Zusammenfassungszelle einer per VBA erstellten Auswertung sieht in etwa so aus:

Platzierung: Rang 34/49, Hochrechnung: 56789 Punkte, Platzierung: Rang 12/49

Nun suche ich nach einer Möglichkeit, per VBA die Textteile "Rang 34/49" und Rang "12/49"
farbig darzustellen (bis zu einer gewissen Größe grün, darüber rot), der Rest des Textes soll schwarz bleiben.
Ich hab das mal mit dem Macrorecorder aufgezeichnet, der zählt leider die Zeichen im aktuellen Text:

    With ActiveCell.Characters(Start:=14, Length:=10).Font
        .Color = -11489280
    End With

Durch die Veränderung der Zahlen ändert sich aber die Anzahl der Zeichen in der Zeile, diese Festlegung darf also nicht statisch sein.

Hat jemand eine Idee?

Grüße

Hofe

------------------
Ist mir egal, wer Dein Vater ist; solange ich angle läuft hier keiner übers Wasser!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

ThoMay
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von ThoMay an!   Senden Sie eine Private Message an ThoMay  Schreiben Sie einen Gästebucheintrag für ThoMay

Beiträge: 5239
Registriert: 15.04.2007

erstellt am: 16. Okt. 2012 05:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hofe 10 Unities + Antwort hilfreich


Bild01-121016.JPG

 
Hallo und einen schönen Start in den Tag Hofe.

Die Werte 12 und 49 sind berechnete Werte.
Trage die Werte in der Zelle so wie im Bild ein.
Dann kannst über VBA die Auswertung machen und entsprechend farbig formatieren.
Für meine Person wurde ich aber eher die ganze Zelle mit bedingeter Formatierung farbig füllen.

Gruß
ThoMay

------------------
Hast du Fragen?
Brauchst du
Schaut mal nach im Bereich
Alle Foren => Wissenstransfer.
oder
Konstrukteure Online hier bei CAD.de
Richtig fragen -
Nettiquette - Konstruktionshilfen - Systeminfo - Unities - CAD Freeware - Forenübersicht - 3D Modelle - SolidWorks Videos

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten-3m
Mitglied
Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)


Sehen Sie sich das Profil von carsten-3m an!   Senden Sie eine Private Message an carsten-3m  Schreiben Sie einen Gästebucheintrag für carsten-3m

Beiträge: 950
Registriert: 08.05.2007

Excel 2010

erstellt am: 16. Okt. 2012 09:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hofe 10 Unities + Antwort hilfreich

Alternativ ein ganz einfacher Ansatz: Verteile die eine Zelle mit den 3 Formatbereichen auf 3 Zellen auf. Schon ist das Formatieren ganz einfach.

------------------
Gruß, Carsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Beverly
Mitglied
Dipl.-Geologe (Rentner)


Sehen Sie sich das Profil von Beverly an!   Senden Sie eine Private Message an Berverly  Schreiben Sie einen Gästebucheintrag für Berverly

Beiträge: 394
Registriert: 11.08.2007

erstellt am: 16. Okt. 2012 09:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hofe 10 Unities + Antwort hilfreich

Hi,

verwende InStr und InStrRev um zu ermitteln, welche Startposition anzusetzen ist:

Code:
Sub Farbig()
  Dim intStart1 As Integer
  Dim intStart2 As Integer
  With ActiveCell
      intStart1 = InStr(.Value, "Rang")
      intStart2 = InStrRev(.Value, "Rang")
      With .Characters(Start:=intStart1, Length:=10).Font
        .Color = -16776961
      End With
      With .Characters(Start:=intStart2, Length:=10).Font
        .Color = -11489280
      End With
    End With
End Sub

------------------
Bis später,
Karin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 16. Okt. 2012 12:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hofe 10 Unities + Antwort hilfreich

Da die Länge nicht immer gleich sein muss Rang 34/49 Vs Rang 34/149 oder so wird die Pos des , auch ermittelt, nach hinten kann 99 stehn, kommt ja nix mehr,)

Code:
Sub Farbig()
  Dim intStart1 As Integer
  Dim intStart2 As Integer
  Dim intEnd1 As Integer
  With ActiveCell
      intStart1 = InStr(.Value, "Rang")
      intStart2 = InStrRev(.Value, "Rang")
      intEnd1 = InStr(.Value, ",") - 1
      With .Characters(Start:=intStart1, Length:=intEnd1).Font
        .Color = -16776961
      End With
      With .Characters(Start:=intStart2, Length:=99).Font
        .Color = -11489280
      End With
    End With
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Hofe
Mitglied
Werkzeugmacher


Sehen Sie sich das Profil von Hofe an!   Senden Sie eine Private Message an Hofe  Schreiben Sie einen Gästebucheintrag für Hofe

Beiträge: 439
Registriert: 12.01.2008

erstellt am: 16. Okt. 2012 14:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Mahlzeit!

Erstmal allgemeinen Dank für die durchwegs brauchbaren Vorschläge!
Die einfache Methode der aufgeteilten Zelle scheitert am Aufbau des Tabellenblattes, da sind zuviele benutzte Zellen drumherum, dass sich der Änderungsaufwand hier lohnen würde.
Ich habe mir Karins Lösung rausgepickt, weil sie am besten zum Projekt passt (es handelt sich um ein Blatt, das mit Daten aus anderen Blättern komplett per VBA befüllt wird; ein Mischmasch mag ich nicht so gerne).

Die Funktion InstrRev war mir neu, es funktioniert prima.
Kleiner Schönheitsfehler: Da der zu färbende String sowohl 2/49 als auch 25/53 lauten kann, die Zeichenmenge also um 1 variieren kann, wird halt unter Umständen auch das nachfolgende Komma mit eingefärbt, aber damit kann ich gut leben.

Allseits besten Dank!

Und die Ü's nicht gleich verprassen, schließlich ist Weltsparwoche 

Grüße

Hofe

------------------
Ist mir egal, wer Dein Vater ist; solange ich angle läuft hier keiner übers Wasser!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Hofe
Mitglied
Werkzeugmacher


Sehen Sie sich das Profil von Hofe an!   Senden Sie eine Private Message an Hofe  Schreiben Sie einen Gästebucheintrag für Hofe

Beiträge: 439
Registriert: 12.01.2008

Computer: Aldi
Schreibtisch: Ikea
Werkbank: Baumarkt
Software:
1967-2021, viele Updates und SP's, aber sicher nicht alle, deswegen immer wieder Sicherheitslücken

erstellt am: 16. Okt. 2012 14:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ups!

Da hatte ich doch das Fenster so lange offen, dass ich Thomas' Beitrag erst jetzt gesehen habe.
Ich mach mich gleich mal an die Umsetzung.

Grüße

Hofe

------------------
Ist mir egal, wer Dein Vater ist; solange ich angle läuft hier keiner übers Wasser!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Beverly
Mitglied
Dipl.-Geologe (Rentner)


Sehen Sie sich das Profil von Beverly an!   Senden Sie eine Private Message an Berverly  Schreiben Sie einen Gästebucheintrag für Berverly

Beiträge: 394
Registriert: 11.08.2007

erstellt am: 16. Okt. 2012 15:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hofe 10 Unities + Antwort hilfreich

Hi,

Code:
Sub Farbig()
   Dim intStart1 As Integer
   Dim intStart2 As Integer
   Dim intEnde1 As Integer
   With ActiveCell
      intStart1 = InStr(.Value, "Rang")
      intStart2 = InStrRev(.Value, "Rang")
      intEnde1 = InStr(.Value, ",") - InStr(.Value, "Rang")
      With .Characters(Start:=intStart1, Length:=intEnde1).Font
         .Color = -11489280
      End With
      With .Characters(Start:=intStart2).Font
         .Color = -16776961
      End With
    End With
End Sub

------------------
Bis später,
Karin

[Diese Nachricht wurde von Beverly am 16. Okt. 2012 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Hofe
Mitglied
Werkzeugmacher


Sehen Sie sich das Profil von Hofe an!   Senden Sie eine Private Message an Hofe  Schreiben Sie einen Gästebucheintrag für Hofe

Beiträge: 439
Registriert: 12.01.2008

Computer: Aldi
Schreibtisch: Ikea
Werkbank: Baumarkt
Software:
1967-2021, viele Updates und SP's, aber sicher nicht alle, deswegen immer wieder Sicherheitslücken

erstellt am: 16. Okt. 2012 15:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Genial! Und mal wieder soooo einfach.

Kleine Korrektur war nötig, dann stimmts mit der Anzahl der Zeichen:

Code:
Sub Farbig()
  Dim intStart1 As Integer
  Dim intStart2 As Integer
  Dim intEnd1 As Integer
  With ActiveCell
      intStart1 = InStr(.Value, "Rang")
      intStart2 = InStrRev(.Value, "Rang")
      intEnd1 = InStr(.Value, ",") '- 1
      With .Characters(Start:=intStart1, Length:=intEnd1 - intStart1).Font
        .Color = -16776961
      End With
      With .Characters(Start:=intStart2, Length:=99).Font
        .Color = -11489280
      End With
    End With
End Sub

Sonst wird ab dem ersten Zeichen bis zum Komma gezählt und diese Anzahl Zeichen eingefärbt.

Besten Dank!

Grüße

Hofe

Zitat:
Original erstellt von Thomas Harmening:
Da die Länge nicht immer gleich sein muss Rang 34/49 Vs Rang 34/149 oder so wird die Pos des , auch ermittelt, nach hinten kann 99 stehn, kommt ja nix mehr,)


------------------
Ist mir egal, wer Dein Vater ist; solange ich angle läuft hier keiner übers Wasser!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Beverly
Mitglied
Dipl.-Geologe (Rentner)


Sehen Sie sich das Profil von Beverly an!   Senden Sie eine Private Message an Berverly  Schreiben Sie einen Gästebucheintrag für Berverly

Beiträge: 394
Registriert: 11.08.2007

erstellt am: 16. Okt. 2012 19:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hofe 10 Unities + Antwort hilfreich

wie ich in meinem letzten Beitrag gepostet habe, den du offensichtlich nicht gelesen hast, muss die Länge nicht angegeben werden, wenn es den Rest der Zeichen betrifft.

------------------
Bis später,
Karin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Hofe
Mitglied
Werkzeugmacher


Sehen Sie sich das Profil von Hofe an!   Senden Sie eine Private Message an Hofe  Schreiben Sie einen Gästebucheintrag für Hofe

Beiträge: 439
Registriert: 12.01.2008

Computer: Aldi
Schreibtisch: Ikea
Werkbank: Baumarkt
Software:
1967-2021, viele Updates und SP's, aber sicher nicht alle, deswegen immer wieder Sicherheitslücken

erstellt am: 16. Okt. 2012 19:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Beverly:
wie ich in meinem letzten Beitrag gepostet habe, den du offensichtlich nicht gelesen hast, muss die Länge nicht angegeben werden, wenn es den Rest der Zeichen betrifft.

Ja, das kam jetzt alles etwas durcheinander 
Dein Vorschlag ist derselbe wie der von Thomas und funktioniert mit meiner Korrektur (fett+kursiv hervorgehoben) wunderbar.

Nochmal ein Dankeschön?

Danke 

Grüße

Hofe

------------------
Ist mir egal, wer Dein Vater ist; solange ich angle läuft hier keiner übers Wasser!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Beverly
Mitglied
Dipl.-Geologe (Rentner)


Sehen Sie sich das Profil von Beverly an!   Senden Sie eine Private Message an Berverly  Schreiben Sie einen Gästebucheintrag für Berverly

Beiträge: 394
Registriert: 11.08.2007

erstellt am: 16. Okt. 2012 20:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Hofe 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Hofe:

Dein Vorschlag ist derselbe wie der von Thomas und funktioniert mit meiner Korrektur (fett+kursiv hervorgehoben) wunderbar.

Nein, ist eben nicht derselbe - vergleiche:

Code:
With .Characters(Start:=intStart2, Length:=99).Font

Code:
With .Characters(Start:=intStart2).Font

Wenn die Zeichen am Ende stehen ist die Angabe von Length nicht erforderlich.

------------------
Bis später,
Karin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz