Excel - Zweigeteilte Formatierung eines Inhalts

Hi,

bei meiner aktuellen Excel-Liste stehe ich leider noch vor einem weiteren Problem und zwar betrifft es diesmal die Formatierung einzelner Zelleninhalte.

Ich möchte, dass entsprechende Inhalte (Namen) mit entsprechender Farbe formatiert werden. Soll heißen: „Thomas“ soll rot sein, „Andreas“ soll blau sein, „Michael“ soll grün sein, usw.

Das ist alles soweit kein Problem, weil ich das einfach über die Bedingte Formatierung regeln kann: Textinhalt ist gleich und entsprechend die Formatierung vornehme.

Für einem unlösbaren Problem stehe ich jetzt aber, wenn der entsprechende Zelleninhalt (Name) zweigeteilt formatiert werden soll. Sprich: Die ersten 3 Buchstaben sollen in einer anderen Farbe formatiert werden als die letzten 3.

Zum Beispiel der Name „Matthias“ => „Matt“ soll in schwarz formatiert werden, „hias“ soll in orange formatiert werden.

Ich habe bislang keine Möglichkeit gefunden, zu einem zufriedenstellenden Ergebnis bei der bedingten Formatierung zu kommen.

Wenn ich die bedingte Formatierung verwende und Textinhalt „beginnend mit“ bzw. „endend mit“ nutze, wird trotzdem der Inhalt als gesamtes formatiert und nicht zweigeteilt :-/

Hat irgendwer eine Lösung für mich ?

Danke!

Gruß

Hallo SK,

ja, ich schon wieder :smile:

da du ja wohl da schon diverses in der bed. Formatierung probiert hast und es nicht klappt wird es wohl damit nicht gehen.
Ist jetzt nur eine Annahme, keine Gewißheit.

Mit Vba kann das gehen.
Vba braucht aber klare eindeutige Ansagen.
Z.B. alle Eingaben in Spalte A werden nach der Eingabe so formatiert daß die ersten x Buchstaben rot werden, die anderen blau.

Oder du hast auf einem Hilfsblatt eine Liste mit Namen mit Hinweisen wie die denn nun gefärbt werden sollen wenn sie auftauchen.

Gruß
Reinhard

Mit Vba kann das gehen.

Vba scheint ein Allheilmittel zu sein. Beeindruckend :wink:)

Vba braucht aber klare eindeutige Ansagen.
Z.B. alle Eingaben in Spalte A werden nach der Eingabe so
formatiert daß die ersten x Buchstaben rot werden, die anderen
blau.

Prinzipiell wäre das kein Problem. Sind denn mehrere Möglichkeit nutzbar oder nur 2 („Entweder oder“) ? Im Endeffekt wären es 9 verschiedene Formatierungen. 7 lediglich in einer Farbe (rot, blau, orange, gelb, lila, schwarz, grün), 2 in gemischter Farbe (rot/schwarz, orange/rot).

Oder du hast auf einem Hilfsblatt eine Liste mit Namen mit
Hinweisen wie die denn nun gefärbt werden sollen wenn sie
auftauchen.

Das wäre mir sogar die liebste Lösung, weil ich so am einfachsten (zumindest nach meiner Interpretation) Änderungen an der Formatierung vornehmen kann, sofern dies mal notwendig sein sollte.

Magst Du mir in der Angelegenheit nochmal helfen ? :smile: Wäre Dir unendlich dankbar (was ich eigentlich jetzt schon bin :smile:). Vorab kann ich schon sagen, dass in Tabelle1 die Spalte „C“ betroffen wäre…

Beste Grüße

Prinzipiell wäre das kein Problem. Sind denn mehrere
Möglichkeit nutzbar oder nur 2 („Entweder oder“) ? Im
Endeffekt wären es 9 verschiedene Formatierungen. 7 lediglich
in einer Farbe (rot, blau, orange, gelb, lila, schwarz, grün),
2 in gemischter Farbe (rot/schwarz, orange/rot).

Oder du hast auf einem Hilfsblatt eine Liste mit Namen mit
Hinweisen wie die denn nun gefärbt werden sollen wenn sie
auftauchen.

Das wäre mir sogar die liebste Lösung, weil ich so am
einfachsten (zumindest nach meiner Interpretation) Änderungen
an der Formatierung vornehmen kann, sofern dies mal notwendig
sein sollte.

Hallo SK,

der Code ist sehr übersichtlich, probiere mal ihn zu verstehen und anzupassen.

Ins Modul des Tabellenblattes:

Option Explicit

Private Sub Worksheet\_Change(ByVal Target As Range)
If Target.Column 3 Then Exit Sub
If Target.Count \> 1 Then Exit Sub
Application.EnableEvents = False
Select Case Target.Value
 Case "Müller"
 Target.Font.ColorIndex = 3
 Case "Meier"
 Target.Font.ColorIndex = 4
 Case "Meier"
 Target.Font.ColorIndex = 5
 Case "Schmidt"
 Target.Characters(Start:=1, Length:=3).Font.ColorIndex = 45
 Target.Characters(Start:=4, Length:=4).Font.ColorIndex = 41
 Case Else
 Target.Font.ColorIndex = 0
End Select
Application.EnableEvents = True
End Sub

Wenn du die Farben sehen willst, so aktiviere ein leeres Blatt und starte diesen Code:

Sub Farbe()
Dim F As Integer
Cells(1, 1).Value = "Text"
Cells(1, 2).Value = "Colorindex"
For F = 0 To 56
 Cells(F + 2, 1).Value = "ABCDEFGHabcdefgh"
 Cells(F + 2, 1).Font.ColorIndex = F
 Cells(F + 2, 2).Value = F
Next F
Columns("A:B").AutoFit
End Sub

Starten= in Excel Alt+F8 und Makro Farbe ausführen lassen.

Gruß
Reinhard

Hi,

ich habs gerade eben ausprobiert und es läuft prima :smile:

Vieeeelen vieeeelen Dank!!! :smile:)

Das verstehen des Codes war nicht schwer. Im Endeffekt sind die Case-Bedingungen einfache Vergleichsoperatoren, die bei erfüllter Bedingungen eine entsprechende Formatierung vornehmen (WENN => DANN) und zwar in diesem Fall in Form einer entsprechenden Schriftfarbe.

Was mir aufgefallen ist, dass auf die exakt korrekte Schreibweise geachtet wird. Sprich, dass exakt „Meier“ geschrieben werden muss, wenn dies so im Vba-Code steht, ansonsten wird es ignoriert. Ist das immer so bei Case-Bedingungen oder gibt es dafür auch einen Vergleichsoperator der auf die exakte Schreibweise verzichtet ? (Nur mal aus reinem Interesse, kenne das auch von PHP her…)

Einziges Problem was ich gerade noch habe ist, wie ich diesen zweiten Vba-Code mit dem ersten Vba-Code aus dem anderen Problem-Thread zusammen zum laufen bekomme ? Wenn ich unten auf „Code anzeigen“ klicke steht logischerweise schon der andere mit der Rundungsfunktion da. Füge ich den jetzigen drunter an gibts nen Fehler. Wahrscheinlich ne ganz simple Sache Wo Anfang und Wo Ende eines Vba-Codes ist aber für mich noch total fremd :-/

Im Endeffekt scheint es aber in der Tat ne ganz simple Sache zu sein, diese Vba Geschichte. Kannst Du mir zur Einarbeitung in die Materie vielleicht eine Internetadresse oder dergleichen nennen, wo man seine ersten Gehversuche machen kann ? Arbeite immer wieder mal mit Excel und würde mich sehr reizen, meine Kenntnisse etwas zu erweitern :smile:

Vielen lieben Dank auf jeden Fall für die von Dir angebotene und tatkräftige Hilfe :smile:

Beste Grüße

Hallo SK,

Das verstehen des Codes war nicht schwer.

das dachte ich mir, sowas wie Select Case wirste wohl kennen zumindest aber leicht verstehen.
Geprüft wird von oben nach unten.
Trifft das erste zu, ja nein.
Bei ja wird der Case zweig des Zutreffenden ausgeführt, alle anderen Zweige nicht.
Trifft nix von den Case-Zweigen zu wird Case Else ausgeführt.

Und wenn jetzt die Eingabe in der überwachten Spalte „Müller“ ist wird der Zweig ür Müller ausgeführt.
Und die Codezeile mit dem Colorindex ist sehr zu verstehen mit Vorwissen *find*

Da wo es zweifarbig werden soll, gehen natürlich auch mehr Farben pro Wort, so ist das auch leicht zu verstehen.
Ein Wort wie Schmidt hat sieben Buchstaben.
Im Code steht, färbe in dem Wort beginnend beim ersten Buchstaben 3 Buchstabenbreit blau. dann färbe in dem Wort beginnend beim vierten Buchstaben 4 Buchstabenbreit rot.

Im Endeffekt sind
die Case-Bedingungen einfache Vergleichsoperatoren, die bei
erfüllter Bedingungen eine entsprechende Formatierung
vornehmen (WENN => DANN) und zwar in diesem Fall in Form einer
entsprechenden Schriftfarbe.

Ja.

Was mir aufgefallen ist, dass auf die exakt korrekte
Schreibweise geachtet wird. Sprich, dass exakt „Meier“
geschrieben werden muss, wenn dies so im Vba-Code steht,
ansonsten wird es ignoriert. Ist das immer so bei
Case-Bedingungen oder gibt es dafür auch einen
Vergleichsoperator der auf die exakte Schreibweise verzichtet
? (Nur mal aus reinem Interesse, kenne das auch von PHP
her…)

Es ist gut *find* daß Select case sehr genau unterscheidet zwischen Müller und müLLER.
Würde es das nicht tun wäre es viel aufwendiger (=Codeverlangsamung) mit anderem Code diese genaue Prüfung nachzubauen.

Abhilfe gegen das genaue Prüfen bieten ucase und lcase.
So baust du das ein:

Select Case Ucase(Target.Value)
 Case "MüLLER"
 Target.Font.ColorIndex = 3

Geht natürlich mit LCase andersrum genauso.

Tipp, wenn du im Editor bist, dann stelle den Curser mitten in z.B. UCase und drücke F1, dann kriegst du Hilfe zu den Anweisungen.

Und nochwas, um z.B. das Makro „farbe“ zu starten mußt du nicht den Editor verlassen um in Excel mit Alt+F8 usw.
Stelle den Curser mitten in den Code von „farbe“ irgendwohin und drücke entweder F5 dann läuft der Code durch oder F8, dann wird der Code zeilenweise abgearbeitet , ideal zur Fehlersuche.

Einziges Problem was ich gerade noch habe

Du Glücklicher :smile:))

ist, wie ich diesen
zweiten Vba-Code mit dem ersten Vba-Code aus dem anderen
Problem-Thread zusammen zum laufen bekomme ?

Es kann nur einen geben wie in diesen irischen Schwertfilmen.
Also pro (Tabellenblatt-) Modul darf es nur eine Prozedur geben die
Worksheet_Change heißt.
Also Codes vereinen.

Damit du keine Umsetzungsprobleme bekommst, lade mal bitte eine Beispielmappe hoch.
Paar beispieldaten in G C reichen, andere Spalten interessieren wohl nicht.
Hochladen mit z.B. http://www.uploadagent.de/

Wenn ich unten
auf „Code anzeigen“ klicke

Das habe ich nur gesagt damit du auch zielsicher das richtige Modul bekommst.
Diesen Weg benutze ich aber nie. Alt+F11, dann Doppelklick auf das Modul wo ich hin will oder eines mit Einfügen-Modul einfügen.
Gewöhn dir das bitte auch an wenn du Vba häufig nutzen willst.

Ist mal links in der Liste nix zu sehen von den Modulen wo ich hin will, das ist dort aufgebaut wie im Explorer, also Baumstruktur und dieses Pluszeichen…

Im Endeffekt scheint es aber in der Tat ne ganz simple Sache
zu sein, diese Vba Geschichte. Kannst Du mir zur Einarbeitung
in die Materie vielleicht eine Internetadresse oder
dergleichen nennen, wo man seine ersten Gehversuche machen
kann ? Arbeite immer wieder mal mit Excel und würde mich sehr
reizen, meine Kenntnisse etwas zu erweitern :smile:

Ich hab den Link nicht greifbar, aber auf der Webseite der Fernuni Hagen gibt es irgendwo unter Broschüren oder so zwei PDFs zum Runterladen über Vba in Excel.

Sag Bescheid wenn du die nicht findest, dann kram ich mal in meinem Chaos :frowning:

Gruß
Reinhard

das dachte ich mir, sowas wie Select Case wirste wohl kennen
zumindest aber leicht verstehen.
Geprüft wird von oben nach unten.
Trifft das erste zu, ja nein.
Bei ja wird der Case zweig des Zutreffenden ausgeführt, alle
anderen Zweige nicht.
Trifft nix von den Case-Zweigen zu wird Case Else ausgeführt.

Dann ist es vergleichbar mit der If-Else Funktion bei PHP bzw. Alternativ Switch-Case, bei der Stück für Stück abgearbeitet wird und wenn keine Bedingung erfüllt ist, else ausgegeben wird.

Und wenn jetzt die Eingabe in der überwachten Spalte „Müller“
ist wird der Zweig ür Müller ausgeführt.
Und die Codezeile mit dem Colorindex ist sehr zu verstehen mit
Vorwissen *find*

Da stimme ich Dir zu. Die Codezeile ist sehr simpel.

Da wo es zweifarbig werden soll, gehen natürlich auch mehr
Farben pro Wort, so ist das auch leicht zu verstehen.
Ein Wort wie Schmidt hat sieben Buchstaben.
Im Code steht, färbe in dem Wort beginnend beim ersten
Buchstaben 3 Buchstabenbreit blau. dann färbe in dem Wort
beginnend beim vierten Buchstaben 4 Buchstabenbreit rot.

Das habe ich auch so verstanden. Im Endeffekt wird immer mit den Längenangaben gearbeitet, so lässt sich ein Wort beliebig unterteilen. Sehr praktisch :smile:

Es ist gut *find* daß Select case sehr genau unterscheidet
zwischen Müller und müLLER.
Würde es das nicht tun wäre es viel aufwendiger
(=Codeverlangsamung) mit anderem Code diese genaue Prüfung
nachzubauen.

Da stimme ich Dir prinzipiell zu, muss jedoch auch auf das Anwendungsgebiet individuell betrachtet werden. Wenn man ne reltiv kleine, überschaubare Datei hat dürfte die längere Codeausführung im minimalen Bereich liegen. Es gibt ja Anwendungsgebiete, bei denen die korrekte Schreibweise grundlegend egal ist. Muss mal schauen, ob ich den Code entsprechend umstelle… Wenn dann wohl eher als Lerngründen anstatt aus Notwendigkeit. Die korrekte Schreibweise ist eigentlich meist gegeben und deshalb macht die Prüfung eigentlich nix aus… Hat mich nur mal interessiert ob’s auch anders geht :smile:

Abhilfe gegen das genaue Prüfen bieten ucase und lcase.
So baust du das ein:

Select Case Ucase(Target.Value)
Case „MüLLER“
Target.Font.ColorIndex = 3

Geht natürlich mit LCase andersrum genauso.

Klasse. Danke :smile:

Tipp, wenn du im Editor bist, dann stelle den Curser mitten in
z.B. UCase und drücke F1, dann kriegst du Hilfe zu den
Anweisungen.

Und nochwas, um z.B. das Makro „farbe“ zu starten mußt du
nicht den Editor verlassen um in Excel mit Alt+F8 usw.
Stelle den Curser mitten in den Code von „farbe“ irgendwohin
und drücke entweder F5 dann läuft der Code durch oder F8, dann
wird der Code zeilenweise abgearbeitet , ideal zur
Fehlersuche.

Gracias!

Es kann nur einen geben wie in diesen irischen Schwertfilmen.
Also pro (Tabellenblatt-) Modul darf es nur eine Prozedur
geben die
Worksheet_Change heißt.
Also Codes vereinen.

Das dachte ich mir schon :smile: Die Frage ist jetzt für mich nur, wie ich die beiden Codes vereine, da ich noch nicht ganz verstehe was Code-und was Funktionsangabe ist.

Habe jetzt diese beiden Codes:

Option Explicit

Private Sub Worksheet\_Change(ByVal Target As Range)
If Target.Column 7 Then Exit Sub
If Target.Count \> 7 Then Exit Sub
Worksheets("Tabelle3").Range(Target.Address) = Target.Value
Application.EnableEvents = False
Target.Value = Int(Target.Value \* 100) / 100
Application.EnableEvents = True
End Sub

und

Option Explicit

Private Sub Worksheet\_Change(ByVal Target As Range)
If Target.Column 3 Then Exit Sub
If Target.Count \> 1 Then Exit Sub
Application.EnableEvents = False
Select Case Target.Value
 Case "Breitschneider"
 Target.Font.ColorIndex = 0
 Case "Häberle"
 Target.Font.ColorIndex = 46
 Case "Schneider"
 Target.Font.ColorIndex = 41
 Case "Kiesling"
 Target.Font.ColorIndex = 44
 Case "Wolf"
 Target.Font.ColorIndex = 3
 Case "Schmidt"
 Target.Font.ColorIndex = 50
 Case "Wolf"
 Target.Font.ColorIndex = 13
 Case "Frank"
 Target.Characters(Start:=1, Length:=3).Font.ColorIndex = 3
 Target.Characters(Start:=4, Length:=2).Font.ColorIndex = 0
 Case "Schulz"
 Target.Characters(Start:=1, Length:=3).Font.ColorIndex = 44
 Target.Characters(Start:=4, Length:=6).Font.ColorIndex = 3
 Case Else
 Target.Font.ColorIndex = 0
End Select
Application.EnableEvents = True
End Sub

Ich habe jetzt mal versucht beide Codes entsprechend zu vereinen, nur der zweite Abschnitt mit den Farben wird nicht ausgeführt. Für Dich vermutlich eine Leichtigkeit den Fehler zu erkennen :wink: Für mich etwas unklar :smile:

Option Explicit

Private Sub Worksheet\_Change(ByVal Target As Range)
If Target.Column 7 Then Exit Sub
If Target.Count \> 7 Then Exit Sub
Worksheets("Tabelle3").Range(Target.Address) = Target.Value
Application.EnableEvents = False
Target.Value = Int(Target.Value \* 100) / 100
Application.EnableEvents = True

If Target.Column 3 Then Exit Sub
If Target.Count \> 1 Then Exit Sub
Application.EnableEvents = False
Select Case Target.Value
 Case "Breitschneider"
 Target.Font.ColorIndex = 0
 Case "Häberle"
 Target.Font.ColorIndex = 46
 Case "Schneider"
 Target.Font.ColorIndex = 41
 Case "Kiesling"
 Target.Font.ColorIndex = 44
 Case "Wolf"
 Target.Font.ColorIndex = 3
 Case "Schmidt"
 Target.Font.ColorIndex = 50
 Case "Wolf"
 Target.Font.ColorIndex = 13
 Case "Frank"
 Target.Characters(Start:=1, Length:=3).Font.ColorIndex = 3
 Target.Characters(Start:=4, Length:=2).Font.ColorIndex = 0
 Case "Schulz"
 Target.Characters(Start:=1, Length:=3).Font.ColorIndex = 44
 Target.Characters(Start:=4, Length:=6).Font.ColorIndex = 3
 Case Else
 Target.Font.ColorIndex = 0
End Select
Application.EnableEvents = True
End Sub

Damit du keine Umsetzungsprobleme bekommst, lade mal bitte
eine Beispielmappe hoch.
Paar beispieldaten in G C reichen, andere Spalten
interessieren wohl nicht.
Hochladen mit z.B. http://www.uploadagent.de/

Funktioniert leider nicht. Auf uploadagent bekomm ich ständig die Fehlermeldung, dass es eine ungültige bzw. nicht unterstützte Datei ist, obwohl es ne normale Excel-Datei ist (einmal mit Makros abgespeichert, einmal ohne) :-/ Gehts vllt. auch ohne oder per eMail ?

Das habe ich nur gesagt damit du auch zielsicher das richtige
Modul bekommst.
Diesen Weg benutze ich aber nie. Alt+F11, dann Doppelklick auf
das Modul wo ich hin will oder eines mit Einfügen-Modul
einfügen.
Gewöhn dir das bitte auch an wenn du Vba häufig nutzen willst.

Wird gemacht :smile:

Ich hab den Link nicht greifbar, aber auf der Webseite der
Fernuni Hagen gibt es irgendwo unter Broschüren oder so zwei
PDFs zum Runterladen über Vba in Excel.

Sag Bescheid wenn du die nicht findest, dann kram ich mal in
meinem Chaos :frowning:

Sehr gut. Danke. Dort werde ich umgehend mal nachschauen :smile:

Beste Grüße

Hallo SK,

das dachte ich mir, sowas wie Select Case wirste wohl kennen
zumindest aber leicht verstehen.
Geprüft wird von oben nach unten.
Trifft das erste zu, ja nein.
Bei ja wird der Case zweig des Zutreffenden ausgeführt, alle
anderen Zweige nicht.
Trifft nix von den Case-Zweigen zu wird Case Else ausgeführt.

Dann ist es vergleichbar mit der If-Else Funktion bei PHP bzw.
Alternativ Switch-Case, bei der Stück für Stück abgearbeitet
wird und wenn keine Bedingung erfüllt ist, else ausgegeben
wird.

ja. Ich kenne zwar nix in PHP aber Programmiersprachen umspannend ist wohl
IF, IF Else überall bekannt.
Genau wie eine For Schleife oder Do Loop, While Wend.

Da du diese Vorkenntnisse hast habe ich die Code-Möglichkeit gewählt.
Wie ersichtlich verstehst du ja den Code korrekt, deshalb brauchst du da keine Excelhilfstabelle.

Und zu VB A (VBA ist nur eine Untermenge der Original VB-Befehle plus eigene VBA-Anweisungen die aber abhängig davon sind um welches Programm mit VBA von MS es sich handelt.
Word-Vba kann mit Worksheet_Change rein gar nix anfangen.

Excel-VBA rein gar nix mit Documents.Add. Usw.
Gibt so ca. 30 MS-Programmme die VBA kennen, wie z.B. Corel Draw.

Allen gemeinsam ist die o.g. Untermenge von VB.
Also For, While, Do, Select Case können sie alle.

Wenn du im Editor rechts oben auf das „?“ klickst so steht da zwar eine VB-Version bei „Info“ aber vergiss die.
Damit kann kein reiner VBler was anfangen.

Wenn du irgendwo anfragst und deine Version nennen willst bei VBA dann sag Excel 2002, das ist das was wichtig ist.

Und wenn jetzt die Eingabe in der überwachten Spalte „Müller“
ist wird der Zweig ür Müller ausgeführt.
Und die Codezeile mit dem Colorindex ist sehr zu verstehen mit
Vorwissen *find*

Da stimme ich Dir zu. Die Codezeile ist sehr simpel.

Okay, und wenn du anstatt der Schriftfarbe den Zellhintergrund färben willst, tauschst du einfach „Font“ gegen „Interior“

Da wo es zweifarbig werden soll, gehen natürlich auch mehr
Farben pro Wort, so ist das auch leicht zu verstehen.
Ein Wort wie Schmidt hat sieben Buchstaben.
Im Code steht, färbe in dem Wort beginnend beim ersten
Buchstaben 3 Buchstabenbreit blau. dann färbe in dem Wort
beginnend beim vierten Buchstaben 4 Buchstabenbreit rot.

Das habe ich auch so verstanden. Im Endeffekt wird immer mit
den Längenangaben gearbeitet, so lässt sich ein Wort beliebig
unterteilen. Sehr praktisch :smile:

Korrekt. Auf die Art kannste ein Wort auch sehr bunt machen :smile:)

K.A. wie das in PHP ist, in Excel hast du eine Farbpalette von 56 Farben, die gleichzeitig dargestellt werden können.
Dazu kommt noch 0 (farbe automatisch) bei Font und Xlnone (keine frabe) bei Interior.

Als Standardeinstellung ist 56 gelogen, 16 Farben sind doppelt.
Aber du kannst manuell oder per Vba jede der 56 Farben umfärben.

Es ist gut *find* daß Select case sehr genau unterscheidet
zwischen Müller und müLLER.
Würde es das nicht tun wäre es viel aufwendiger
(=Codeverlangsamung) mit anderem Code diese genaue Prüfung
nachzubauen.

Da stimme ich Dir prinzipiell zu, muss jedoch auch auf das
Anwendungsgebiet individuell betrachtet werden. Wenn man ne
reltiv kleine, überschaubare Datei hat dürfte die längere
Codeausführung im minimalen Bereich liegen.

Okay, okay, erwischt *lächel*
Einigen wir uns auf Zusatzcodezeilen :smile:

Es gibt ja
Anwendungsgebiete, bei denen die korrekte Schreibweise
grundlegend egal ist.

Genau, manchmal ist es wichtig, manchmal ist es unwichtig.
Deshalb begrüße ich z.B. Funktionen wo man deren Reaktion einstellen kann mit einem Parameter/Argument bei Funktionsaufruf.

Im Pseudocode so

Select Case Wert Schreibweisenüberprüfung = True
oder
Select Case Wert Schreibweisenüberprüfung = False

Muss mal schauen, ob ich den Code
entsprechend umstelle… Wenn dann wohl eher als Lerngründen
anstatt aus Notwendigkeit.

UCase; LCASE ist doch auch leicht durchschaubar.
Bei UCASE so
If Ucase(Text) = „MÜLLER“ Then
bzw.
If Lcase(Text) = „müller“ Then

Klar kkannste auch sowas schreiben:

If Ucase(Text) = UCase(„mÜlLeR“ Then

*gg*

Tipp, wenn du im Editor bist, dann stelle den Curser mitten in
z.B. UCase und drücke F1, dann kriegst du Hilfe zu den
Anweisungen.

Und nochwas, um z.B. das Makro „farbe“ zu starten mußt du
nicht den Editor verlassen um in Excel mit Alt+F8 usw.
Stelle den Curser mitten in den Code von „farbe“ irgendwohin
und drücke entweder F5 dann läuft der Code durch oder F8, dann
wird der Code zeilenweise abgearbeitet , ideal zur
Fehlersuche.

Gracias!

De nada.

Damit du keine Umsetzungsprobleme bekommst, lade mal bitte
eine Beispielmappe hoch.
Hochladen mit z.B. http://www.uploadagent.de/

Funktioniert leider nicht. Auf uploadagent bekomm ich ständig
die Fehlermeldung, dass es eine ungültige bzw. nicht
unterstützte Datei ist, obwohl es ne normale Excel-Datei ist
(einmal mit Makros abgespeichert, einmal ohne) :-/ Gehts vllt.
auch ohne oder per eMail ?

Okay, der Webseitenbetreiber wollte zwar den Fehler abstellen denn manche Exceldateien gehen problemlos, muß ihn noch mal kontaktieren.
Nimm einstweilen file-upload, s. FAQ:2606

Gruß
Reinhard

ja. Ich kenne zwar nix in PHP aber Programmiersprachen
umspannend ist wohl
IF, IF Else überall bekannt.
Genau wie eine For Schleife oder Do Loop, While Wend.

Exakt. Die einfachsten Wenn-Dann-Bedingungen sind wohl umfassend identisch :smile:

Wenn du im Editor rechts oben auf das „?“ klickst so steht da
zwar eine VB-Version bei „Info“ aber vergiss die.
Damit kann kein reiner VBler was anfangen.

Wenn du irgendwo anfragst und deine Version nennen willst bei
VBA dann sag Excel 2002, das ist das was wichtig ist.

Alles klar. Dankesehr :smile:

Korrekt. Auf die Art kannste ein Wort auch sehr bunt machen

-))

K.A. wie das in PHP ist, in Excel hast du eine Farbpalette von
56 Farben, die gleichzeitig dargestellt werden können.
Dazu kommt noch 0 (farbe automatisch) bei Font und Xlnone
(keine frabe) bei Interior.

Bei PHP arbeitet man nur selten mit Farben (z.B. bei Grafikanwendungen, dann mit RGB-Farbcodes). Ansonsten sind es zumeist HTML-Einbindungen die dann mit Hexadezimalfarbcodes funktionieren.

Okay, okay, erwischt *lächel*
Einigen wir uns auf Zusatzcodezeilen :smile:

Einverstanden :smile:

UCase; LCASE ist doch auch leicht durchschaubar.
Bei UCASE so
If Ucase(Text) = „MÜLLER“ Then
bzw.
If Lcase(Text) = „müller“ Then

Klar kkannste auch sowas schreiben:

If Ucase(Text) = UCase(„mÜlLeR“ Then

*gg*

Sehr simpel :smile:

Okay, der Webseitenbetreiber wollte zwar den Fehler abstellen
denn manche Exceldateien gehen problemlos, muß ihn noch mal
kontaktieren.
Nimm einstweilen file-upload, s. FAQ:2606

Geschehen. Bittesehr: http://www.file-upload.net/download-3699267/Beispiel…

Bin übrigens beim durcharbeiten meiner Excel-Dateien noch zu einem weiteren „Problem“ gestoßen, bei dem ich evt. deine Hilfe gebrauchen könnte. Darf ich Dich deshalb nochmal um Rat bitten in einem extra Thread ? Wäre toll :smile:

Beste Grüße

Hallo SK,

K.A. wie das in PHP ist, in Excel hast du eine Farbpalette von
56 Farben, die gleichzeitig dargestellt werden können.
Dazu kommt noch 0 (farbe automatisch) bei Font und Xlnone
(keine frabe) bei Interior.

Bei PHP arbeitet man nur selten mit Farben (z.B. bei
Grafikanwendungen, dann mit RGB-Farbcodes). Ansonsten sind es
zumeist HTML-Einbindungen die dann mit Hexadezimalfarbcodes
funktionieren.

RGB gibt es auch als VBA Befehl, siehe Hilfe.
Das würde dann theoretisch so aussehen:
Range(„A1“).Interior.Color=RGB(Wert1,Wert2,Wert3)
Das klappt aber nicht.

Sonst könntest du ja derart 200 Zellen verschiedene farben zuweisen und das geht nicht, gehen nur 56.

Ergo müßte du der Farbnummer 1 derart diese RGB-Farbe zuweisen, der farbnummer 2 eine andere RGB-Farbe.
Das geht über farb-Palette ändern, geht auch manuell.

Ansonsten nimmt Excel wenn du A1 so eine RGB farbe zuweist die am meisten ähnliche aus seinen 56 farben.

http://www.file-upload.net/download-3699267/Beispiel…

Ich schau mal, vielleicht erst morgen o.ä.

Bin übrigens beim durcharbeiten meiner Excel-Dateien noch zu
einem weiteren „Problem“ gestoßen, bei dem ich evt. deine
Hilfe gebrauchen könnte. Darf ich Dich deshalb nochmal um Rat
bitten in einem extra Thread ? Wäre toll :smile:

Mach ma.

Gruß
Reinhard

Ich habs nochmal auf eigene Faust probiert und habe einen ersten Erfolg zu verzeichnen. Mit folgendem Code komme ich zum gewünschten Ergebnis, dass beide Codes ausgeführt werden. Würde mich freuen, wenn Du nochmal drüber schaust um mir evt. sagen zu können, ob ich trotzdem noch irgendwo nen (Denk-)fehler habe. Laufen tut’s auf jeden Fall schon mal :smile:

Option Explicit

Private Sub Worksheet\_Change(ByVal Target As Range)
If Target.Column 3 And Target.Column 7 Then Exit Sub
If Target.Count \> 7 Then Exit Sub

If Target.Column = 3 Then

 Application.EnableEvents = False

Select Case Target.Value
 Case "Breitschneider"
 Target.Font.ColorIndex = 0
 Case "Häberle"
 Target.Font.ColorIndex = 46
 Case "Schneider"
 Target.Font.ColorIndex = 41
 Case "Kiesling"
 Target.Font.ColorIndex = 44
 Case "Wolf"
 Target.Font.ColorIndex = 3
 Case "Schmidt"
 Target.Font.ColorIndex = 50
 Case "Wolf"
 Target.Font.ColorIndex = 13
 Case "Frank"
 Target.Characters(Start:=1, Length:=3).Font.ColorIndex = 3
 Target.Characters(Start:=4, Length:=2).Font.ColorIndex = 0
 Case "Schulz"
 Target.Characters(Start:=1, Length:=3).Font.ColorIndex = 44
 Target.Characters(Start:=4, Length:=6).Font.ColorIndex = 3
 Case Else
 Target.Font.ColorIndex = 0
End Select

Application.EnableEvents = True

ElseIf Target.Column = 7 Then

 Worksheets("Tabelle3").Range(Target.Address) = Target.Value
 Application.EnableEvents = False
 Target.Value = Int(Target.Value \* 100) / 100
 Application.EnableEvents = True

End If
 
End Sub

Hallo SK,

sorry, ich hab noch nix gemacht.

Ich habs nochmal auf eigene Faust probiert

Sehr gut, so lernt man am besten.

und habe einen
ersten Erfolg zu verzeichnen. Mit folgendem Code komme ich zum
gewünschten Ergebnis, dass beide Codes ausgeführt werden.

Mal was zu „Option Expicit“.
Das erzwingt daß du jeden Variablennamen deklarieren mußt.
Und es ist ein MUß.
Es steht immer nur einmalig in jedem Modul ganz oben.
Um das automatisch so zu haben gehe im Editor auf extras–Optionen und hak da an „Variablendeklaration erforderlich“ oder wie das da da heißt.

Dann haste es automatisch in jeder neuen Mappe.

Ein Hauptgrund, neben anderen anderen ist, angenommen du hast einen sehr langen Code.
Wo du die variable „Letzte“ benutzt. Irgendwo im Code steht aber „Letze“.
Bei langen Codes kannste da 2 Stunden suchen bis du auf den Fehler kommst *sehr wahr*.
Mit Option Explicit passiert das nicht.

Dann mußt du Letzte mit Dim deklarieren.
Und der Editor sagt dir beim Programmstart glasklar, Momentemal, was soll da die undeklarierte Variable Letze…

Würde mich freuen, wenn Du nochmal drüber schaust um mir evt.
sagen zu können, ob ich trotzdem noch irgendwo nen
(Denk-)fehler habe. Laufen tut’s auf jeden Fall schon mal :smile:

Mache ich, diesmal gleich :smile:

Gruß
Reinhard

Ich habs nochmal auf eigene Faust probiert und habe einen
ersten Erfolg zu verzeichnen. Mit folgendem Code komme ich zum
gewünschten Ergebnis, dass beide Codes ausgeführt werden.
Würde mich freuen, wenn Du nochmal drüber schaust um mir evt.
sagen zu können, ob ich trotzdem noch irgendwo nen
(Denk-)fehler habe. Laufen tut’s auf jeden Fall schon mal :smile:

hallo SK,

alles okay so wie ich es sah.
Bei so vielen unterschiedlichen Farbzuweisungen kann man kaum was tun um den Code zu verkürzen.

Wenn du da 500 Namen hättest denen je nachdem einer der 56 Farbwerte zugeordnet werden soll kannste dann natürlich eine riesenlange Select Case bauen.
Oder auf einem Hilfsblatt die namen auflisten und in Spalten daneben die farben bzw. in mehreren Spalten von welchem Buchstaben bis zu welchem Buchstaben sie wie gefärbt werden sollen.

Viel mehr Möglichkeiten haste dann nicht außer den genannten.

If Target.Count > 7 Then Exit Sub
ist mir suspect.

Wie gesagt, Target.Count bedeutet Target.Cells.Count, also die Anzahl der Zellen die gerade gleichzeitig geändert wurden.
Warum willst du 1-7 gleichzeitig geänderte Zellen (Reinkopieren o.ä.) „durchgehen“ lassen aber 8 und mehr nicht?

Gruß
Reinhard