Formularsteuerel.-Btn: Text formatieren
30.11.2021 18:20:18
Peter
Ich habe ein Problem (und eine zweitbeste Lösung dazu) und bin auf der Suche nach einer besseren - und habe beim Ausprobieren drei seltsame Beobachtungen gemacht, die ich mit Euch teilen will.
Vielleicht kann ja jemand eine Erläuterung dazu geben.
Problem:
======
Ich möchte mit einem Formularsteuerelement-Button auf einer Seite ge'toggel't ein paar Spalten aus- und einblenden.
Dabei möchte ich auf dem Button im Wechsel zwei verschiedenen Texte anzeigen.
Jeweils drei Wingdingszeichen:
Aber weil 'Einfach kann jeder' :--) hätte ich gerne das Magnetband größer als die Pfeile und farbig, weil ich auch andere Buttons der Mappe (statischer Text) in dieser Weise formatiert habe).
Händisch gemacht gar kein Problem! (Aufzeichnung Makro dazu in der Mappe ganz unten)
Nach dem Überwinden zweier Hürden (s. u.) funktioniert das, aber leider verbleibt der Fokus auf dem Button, da diese Methode ihn erst selektiert, bevor sie ihn verändert.
Frage 1: Kennt jemand von Euch eine andere Methode, die dies erreicht, ohne den Button vorher zu selektieren?
Frage 2: Wie kann ich danach wieder das Sheet selektieren - ich vermute, die ursprüngliche Userselektion von Zellen ist dort noch aktiv!? Wäre wichtig.
Seltsame Beobachtungen:
=================
1. Will man den aufgezeichneten Makro noch einmal aufrufen, kommt es in der letzten Zeile zu einer seltsamen Fehlermeldung:
Sub Makro1()
ActiveSheet.Shapes.Range(Array("btnTest")).Select
Selection.Characters.Text = ">çè"
With Selection.Characters(Start:=1, Length:=1).Font
.Name = "Wingdings"
.FontStyle = "Standard"
.Size = 18
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 53
End With
With Selection.Characters(Start:=2, Length:=2).Font
.Name = "Wingdings"
.FontStyle = "Standard"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = 1 'Erneutes Ausführen führt bei mir (Excel 2010) bei dieser Zeile zum Fehler:
'"Laufzeitfehler '1004': Schriftgrad muss zwischen 1 und 409 Punkten liegen."
' Das ist seltsam, weil "Print Selection.Characters(Start:=2, Length:=2).Font.Size" beim
' "Debugging" im Direktfenster korrekt "10" anzeigt!?
'Fehler nicht mehr, sobald man diese Zeile oben >vor
Was hat die Fontfarbe mit Fontsize zu tun?2. Bei den ersten beiden Methoden im Beispiel, mit denen ich nur den Text des Buttuns ändern kann (ohne Formatierungen, bzw. vielleicht doch, ich wüßte aber nicht wie) wird die Textänderung während der Makro weiterläuft nur sichtbar, wenn ich ein "Application.ScreenUpdating = True" danach einfüge, obwohl es nie auf "False" gesetzt wurde!
3. Bei den letzten beiden Versuchen mit der Methode aus dem aufgezeichneten Makro entstehen links Verzerrungen in einigen Zeilennummern! Fontgröße einer Zeilennummer, eine ist scheinbar leer, ...
Das bleibt auch, wenn der Makro fertig ist. Man muss erst den Teil der Seite wegscrollen (und zurück) oder Blatt/Mappe wechseln (und zurück), damit alles wieder richtig dargestellt wird. Auch hier hilft "Application.ScreenUpdating = True" direkt nach dem Befehl, damit die Darstellung wieder korrekt ist!
Interessant ist, dass es hier ein Darstellungsproblem mit der Fontsize gibt. Das leere Zeilennummerfeld könnte Fontsize 0 haben und gar nicht leer sein!? Ist da der Zusammenhang zu dem Fehler in Beobachtung 1?
Mich würde sehr interessieren, ob das bei moderneren Excelversionen auch so ist!
Vielen Dank schon mal für Eure Bemühungen.