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

ersetzen

ersetzen
27.01.2015 14:03:27
Bend Schmidbauer

Hallo,
wenn ich den Text in Spalte A den Text "estado" durch "ido" ersetze,
geht die Rotfärbung der Buchstaben verloren.
Warum?
https://www.herber.de/bbs/user/95315.xlsxd
Bernd

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ersetzen
27.01.2015 14:21:04
Daniel
Hi
weil du den Inhalt der Zelle änderst und damit gehen die inhahaltsbezogenen Formatinformationen verloren. Es wird dann wieder das Format der Zelle angewendet.
Die Möglichkeit, innerhalb der Zelle unterschiedliche Formate dazustellen, ist in Excel noch nicht so alt und wahrscheinlich auch noch nicht für alle Fälle konsequent umgesetzt, dh in vielen Teilbereichen werkeln noch alte Codes im Hintergrund, die die neuen Funtkionen noch nicht unterstützten.
Gruß Daniel

AW: ersetzen
27.01.2015 14:49:07
Bend Schmidbauer
Hallo (DANIEL),
schade aber trotzdem Danke.
Bernd

Daniels Begründg ist nur zT annähernd richtig, ...
28.01.2015 04:49:53
Luc:-?
…Bernd,
denn natürlich kann man das machen, da es manuell ja auch fktioniert. Man muss es nur pgmieren! Mit einem einfachen manuellen Austausch der entsprd TextTeile gilt die Farbe des ursprünglich hier stehenden TextTeils weiter und alles davor bleibt farblich erhalten. Diese Vorgehensweise entspricht in VBA der Characters-Methode, während alles andere einem Überschreiben des ganzen ZellInhalts entspräche. Die SchriftFarbe orientiert sich dann an der des 1.Zeichens.
Völlig falsch ist dagg die Behauptung, diese Art der TextFormatierung wäre neueren Ursprungs, es sei denn, man würde Xl9/2000 oder gar Xl95 auch darunter zählen. Dann hätte „neu“ aber eine Spannweite von 20 Jahren! :->
Das Einzige, was hieran ab Xl12/2007 geändert wurde, ist die Wirkungsweise der BedingtFormatierung auf solche Texte, was aber inzwischen teilweise wieder zurückgenommen und anders behandelt wurde, so dass sie der alten Wirkung zwar stärker ähnelt, aber ihr nicht vollends entspricht.
Dein Problem ließe sich per VBA bspw so lösen (denn darum geht's ja wohl)*:
Pgm im DokumentKlassenModul der betroffenen Tabelle (für EreignisProzeduren dieses Blattes bestimmt) anlegen!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const adRelBer$ = "E:E", txQTeil$ = "estado", txZTeil$ = "ido"
Dim ld As Long, p As Long, q As Long, z As Long, clr, lt As Variant, _
t As Range, wf As WorksheetFunction
On Abs(Intersect(Target, Me.Range(adRelBer)) Is Nothing) GoTo fx
On Error GoTo fx: Set wf = WorksheetFunction
For Each t In Target.Cells
q = 0: If IsEmpty(t) Then Else q = InStr(t, txQTeil)
If q = 0 Then
ElseIf IsNull(t.Font.Color) Then
p = 1: z = 1: lt = Array(Len(txQTeil), Len(txZTeil))
ld = lt(1) - lt(0): ReDim clr(1 To Len(t) + ld)
If CBool(ld) Then
For p = p To Len(t)
If CBool(ld) And p = q + wf.Min(lt) Then
If ld > 0 Then
For z = p To p + ld - 1
clr(z) = clr(z - 1)
Next z
Else: p = p - ld
End If
End If
If z > UBound(clr) Then Exit For
clr(z) = t.Characters(p, 1).Font.Color: z = z + 1
Next p
Else: clr(p) = t.Characters(p, 1).Font.Color: p = p + 1
End If
t = Replace(t.Text, txQTeil, txZTeil)
For p = 1 To Len(t)
t.Characters(p, 1).Font.Color = clr(p)
Next p
Else: t = Replace(t.Text, txQTeil, txZTeil)
End If
Next t
fx: If CBool(Err.Number) Then MsgBox "Fehler-Abbruch:" & vbLf & _
Err.Description, vbCritical, "Fehler " & CStr(Err.Number): Set t = Nothing
Set wf = Nothing
End Sub
* Sollte das nicht der Fall sein, musst du manuell in die EditierZeile bzw die Zelle klicken und dann dort den jeweiligen TextTeil markieren und überschreiben.
Morrn, Luc :-?
Besser informiert mit …

Anzeige
Verbesserung auf FlipFlop-Änderung
28.01.2015 09:11:42
Luc:-?

Rem BspEventProz zum Ändern v.TextTeilen unter Berücksichtigung
'   von SchriftMehrFarbigkeit m.RückgängigEffekt b.Wiederholung
'   Vs1.1 -LSr\CyWorXxl -cd:20150128 -1pub:do.herber -lupd:do.t
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Const adRelBer$ = "C:C", txQZTeil$ = "estado¦ido"
Dim idx(1) As Integer, ld As Long, p As Long, q As Long, z As Long, _
axQZ$(), clr, lt As Variant, t As Range, wf As WorksheetFunction
On Abs(Intersect(Target, Me.Range(adRelBer)) Is Nothing) GoTo fx
On Error GoTo fx: Set wf = WorksheetFunction
axQZ = Split(txQZTeil, "¦"): lt = Array(Len(axQZ(0)), Len(axQZ(1)))
For Each t In Target.Cells
If Not IsEmpty(t) Then
q = InStr(t, axQZ(0))
If CBool(q) Then
idx(0) = 0: idx(1) = 1
Else: q = InStr(t, axQZ(1))
If CBool(q) Then idx(0) = 1: idx(1) = 0
End If
End If
On Abs(q = 0) GoTo nx
If IsNull(t.Font.Color) Then
p = 1: z = 1: ld = lt(idx(1)) - lt(idx(0))
ReDim clr(1 To Len(t) + ld)
If CBool(ld) Then
For p = p To Len(t) + 1
If CBool(ld) And p = q + wf.Min(lt) Then
If ld > 0 Then
For z = p To p + ld - 1
clr(z) = clr(z - 1)
Next z
Else: p = p - ld
End If
End If
If z > UBound(clr) Then Exit For
clr(z) = t.Characters(p, 1).Font.Color: z = z + 1
Next p
Else: clr(p) = t.Characters(p, 1).Font.Color: p = p + 1
End If
t = Replace(t.Text, axQZ(idx(0)), axQZ(idx(1)))
For p = 1 To Len(t)
t.Characters(p, 1).Font.Color = clr(p)
Next p
Else: t = Replace(t.Text, axQZ(idx(0)), axQZ(idx(1)))
End If
nx: Next t
fx: If CBool(Err.Number) Then MsgBox "Fehler-Abbruch:" & vbLf & _
Err.Description, vbCritical, "Fehler " & CStr(Err.Number): Set t = Nothing
Set wf = Nothing
End Sub
Luc :-?

Anzeige
MailBox explodiert? owT
29.01.2015 14:30:12
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige