HERBERS Excel-Forum - das Archiv

Thema: Letzte Stelle markieren wenn ungleich 1 (VBA)

Letzte Stelle markieren wenn ungleich 1 (VBA)
Erwin
Guten Abend,

in verschiedenen Listen habe ich Spalten mit strings unterschiedlicher Länge (Buchstaben und Zahlen ohne Sonderzeichen). Ich würde gerne immer die letzte Stelle in einer Zelle rot und fett markieren wollen, wenn diese ungleich 1 ist.
Da es unterschiedliche Spalten und verschiedene Startzeilen geben kann, würde ich gerne variabel über eine Inputbox die 1. Zelle markieren und das Makro sollte dann bis zur letzten belegten Zelle laufen.

Danke und Grüße - Erwin
AW: Letzte Stelle markieren wenn ungleich 1 (VBA)
ralf_b


Option Explicit

Sub letzteRotinSpalte()

Dim lrow&, frstrow&, colnr&, i&
colnr = ActiveCell.Column

frstrow = Application.InputBox("Zeile", "Zeile eingeben", 1, , , , , 1)

For i = frstrow To Cells(Cells.Rows.Count, colnr).End(xlUp).Row

With Cells(i, colnr)
If Right(.Value, 1) <> "1" Then
With .Characters(Start:=Len(.Value), Length:=1).Font
.Color = vbRed
.Bold = True
End With
End If
End With
Next
End Sub

AW: Letzte Stelle markieren wenn ungleich 1 (VBA)
Erwin
Hallo Ralf,

nach einem kurzen Test habe ich festgestellt, dass ich z. B. E6 (=$E$&) als Start nicht markieren kann, weil dann die Fehlermeldung "Die Zahl ist ungültig" erscheint.

Gebe ich per Hand die 6 ein, wird nichts oder nur Buchstaben markiert.

Kann man hier bitte noch nachbessern?

Danke - Erwein
AW: Letzte Stelle markieren wenn ungleich 1 (VBA)
Luschi
Hallo Erwin,

da Du nur verbale Infos, aber keine Exceldatei lieferst, kann der Vba-Code des Helfern auch nur sehr vage sein!
Aber diese Info: z. B. E6 (=$E$&) - die übrigens nicht den Tatsachen entspricht, zeigt, daß in der aktiven Spalte Formeln stehen,
und damit ist Dein Vorhaben zum Scheitern verurteilt: in Formelergebnissen ist die Formatierung einzelner Zeichen nicht möglich!

Gruß von Luschi
aus klein-Paris
AW: Letzte Stelle markieren wenn ungleich 1 (VBA)
Erwin
Guten Morgen,

ich war fast geneigt eine kleine Datei zu erstellen, dachte aber, das geht auch ohne; hier jetzt die Beispieldatei: https://www.herber.de/bbs/user/170813.xlsb

Beim bisherigen Code wird die Inputbox aufgerufen und als Zeile die "1" vorgegeben. Klicke ich in die Zelle, so wie von mir vorgegeben, erscheint bei mir tatsächlich: =$G$5
Ich wollte ja völlig frei die Zeile und die Spalte wählen können, damit ich in unterschiedlichen Listen flexibel bin.

Außerdem wird nicht richtig markiert; es sollte immer die letzte Stelle markiert werden, wenn diese keine 1 ist, das ist bei dem Code nicht der Fall (s. Datei).

Vielleicht kann hier noch jemand nachhelfen.

Vielen Dank - Erwin
AW: Letzte Stelle markieren wenn ungleich 1 (VBA)
ralf_b
es gibt tatsächlich ein Problem das reine Zahlen etwas störrisch sind.
wenn du dich damit anfreunden kannst das der Zahlenwert in text umgewandelt wird denn habe ich eine Anpassung
Und du mußt nicht mehr die Spalte aktiviert haben. Jetzt kannst/musst du den Zellbezug mit Buchstaben eingeben.

Sub letzteRotinSpalte2()


Dim colnr&, i&, rng As Range
colnr = ActiveCell.Column
On Error GoTo fehler
Set rng = Application.InputBox("Zellbezug", "Zelle eingeben", "A1", , , , , 8)

For i = rng.Row To Cells(Cells.Rows.Count, rng.Column).End(xlUp).Row

With Cells(i, rng.Column)
If Right(.Value, 1) <> "1" And Len(Cells(i, rng.Column)) > 0 Then
If IsNumeric(.Value) Then .NumberFormat = "@": .Value = CStr(.Value)
With .Characters(Start:=Len(.Value), Length:=1).Font
.Color = vbRed
.Bold = True
End With
End If
End With
Next
fehler:

End Sub
AW: Letzte Stelle markieren wenn ungleich 1 (VBA)
Erwin
Guten Morgen Ralf,

yes, das is es; ich sehe du bist schon wach ;)

Vielen Dank - Erwin