Excel 2010: Zeichen hochstellen

Hallo,

wie kann man in Excel während der Bearbeitung einer Zelle schnell & einfach (am besten mit einer Tastenkombination, so wie zB. in Word mit Strg+# bzw. Strg++) das Zeichenformat in „Hochgestellt“ bzw. „Tiefgestellt“ ändern? Ich krieg das nicht hin :frowning:

Danke + Grüße!
Jochen

PS: Den gesamten Zellinhalt kann ich per Makro hoch- und tiefstellen, aber das geht nicht, wenn ich in der Bearbeitung bin bzw. einen Teil des Textes einer Zelle ausgewählt habe.

wie kann man in Excel während der Bearbeitung einer Zelle
schnell & einfach (am besten mit einer Tastenkombination, so
wie zB. in Word mit Strg+# bzw. Strg++) das Zeichenformat in
„Hochgestellt“
bzw. „Tiefgestellt“ ändern? Ich krieg

Hallo Jochen,

während der Eingabe in einer Zelle hat Vba m.E. keinen Zugriff.

Zeichne mal ein makro auf mit MsgBox „Huhu“, dem du ein Tastenkürzel zuweist.
Es funktioniert in dem Moment nicht.
Auch nicht wenn du in ein Textfeld eingibst.

Aber leg ein Makro mal oben auf ein Symbol, das funktioniert auch während der Eingabe in einem Textfeld.

Daraus kann man evtl. etwas basteln.
Nachteil vom Textfeld, während du im Textfeld bist sind Formatierung wie Fett usw deaktiviert und auch über Format kommste nicht an den Text.

Was theretisch gehen könnte, mit zwei Symbolen oder einem Toggle-Symbol an der Textposition an der du gerade im Textfeld bist, durch Klick auf das Symbol diese Position merken, dann schreibst du weiter, soll der Hochstellungsbereich zu Ende sein klickst du nochmals ein Symbol.

Nach Verlassen der Textbox wird dann von Position1 bis Position2 hochgestellt.
Das ist der Punkt, den ich grad nicht weiß, also ob man in einer Textbox Text unterschiedlich formatieren kann.

Ich hoffe, ich konnte die kleinen Chancen und großen Probleme verdeutlichen.
Noch dazu habe ich kein 2010

Gruß
Reinhard

Hi,

während der Eingabe in einer Zelle hat Vba m.E. keinen
Zugriff.

Ja, das sehe ich auch so (hatte ich ja ausprobiert!). Aber dass es dann wenigstens keine Shortcuts gibt… für Fett, Kursiv, Unterschrichen geht das ja auch.

Aber leg ein Makro mal oben auf ein Symbol, das funktioniert
auch während der Eingabe in einem Textfeld.

Was meinst du mit „oben auf ein Symbol“? Ich habe ein Symbol im Menüband und auch im Schellzugriff - beim Klick ertönt nur ein „Bing“ und das war’s. Das Makro wird nicht ausgeführt. Das kann natürlich auch daran gelegen haben, dass der Code im Makro nicht passt. Dan bliebe aber die Frage: Wie muß der Code im Makro lauten?

Nachteil vom Textfeld, während du im Textfeld bist sind
Formatierung wie Fett usw deaktiviert und auch über Format
kommste nicht an den Text.

Strg+F,K,U funktionieren einwandfrei!

Was theretisch gehen könnte, mit zwei Symbolen oder einem
Toggle-Symbol an der Textposition an der du gerade im Textfeld
bist, durch Klick auf das Symbol diese Position merken, dann
schreibst du weiter, soll der Hochstellungsbereich zu Ende
sein klickst du nochmals ein Symbol.

Jo, aber dann kann ich auch „schnell“ den Zeichenformat-Dialog aufrufen und ein Häkchen setzen… so ein Rumgerödel wollte ich ja umgehen.

Das ist der Punkt, den ich grad nicht weiß, also ob man in
einer Textbox Text unterschiedlich formatieren kann.

Das geht mit

 With ActiveCell.Characters(Start:=4, Length:=3).Font
 .Superscript = True
 .Subscript = False
 End With

Ich hoffe, ich konnte die kleinen Chancen und großen Probleme
verdeutlichen.

Mhm. Große Probleme. Das war mir leider schon irgendwie klar :wink:

Viele Dank jedenfalls!

Grüße,
Jochen

Hallo Jochen,

Ja, das sehe ich auch so (hatte ich ja ausprobiert!). Aber
dass es dann wenigstens keine Shortcuts gibt… für Fett,
Kursiv, Unterschrichen geht das ja auch.

Excel kann natürlich während der Eingabe etwas tun, Vba wenig.

Was meinst du mit „oben auf ein Symbol“?

Sorry, mein Fehler, ich war bei alten Excelversionen :frowning:

Nachteil vom Textfeld, während du im Textfeld bist sind
Formatierung wie Fett usw deaktiviert und auch über Format
kommste nicht an den Text.

Strg+F,K,U funktionieren einwandfrei!

Ja, wenn du in einer Zelle bist, aber nicht in einem Textfeld.

Das ist der Punkt, den ich grad nicht weiß, also ob man in
einer Textbox Text unterschiedlich formatieren kann.

Das geht mit
With ActiveCell.Characters(Start:=4, Length:=3).Font

Ja, aber TextBox1.Characters gibt es nicht.

Mhm. Große Probleme. Das war mir leider schon irgendwie klar

Nachstehend ein Workaround, Eingabe efolgt über ein Textfeld.
Im Text gibst du einfach ein # ein wenn ab da hochgestellt werden soll und noch eines wenn Hochstellung wieder beendet werden soll.
Das zweite kannst du auch weglassen, dann wird vom Ersten # bis Textende hochgestellt.

Im Beispiel habe ich nur über A1 ein Textfeld gebaut. Es ist leicht gelblich damit du sehen kannst wann es da ist.

Probiere einfach mal in dieser Beispielmappe.
Sie ist getestet mit XL2000, nachstehend der ganze Code

Gruß
Reinhard

Option Explicit

Private Sub TextBox1\_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then TextBox1.TopLeftCell.Offset(0, 1).Select
End Sub

Private Sub TextBox1\_LostFocus()
Dim Von As Integer, Bis As Integer
Range("A1") = TextBox1.Text
Von = InStr(Range("A1"), "#")
Bis = InStr(Von + 1, Range("A1"), "#")
If Bis = 0 Then Bis = Len(Range("A1")) + 1
Range("A1") = Replace(Range("A1"), "#", "")
If Von \> 0 Then
 Range("A1").Characters(Start:=Von, Length:=Bis - Von - 1).Font.Superscript = True
End If
End Sub

Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
With TextBox1
 If Target.Address(0, 0) "A1" Then
 .Visible = False
 Else
 .Text = Target.Text
 .Top = Target.Top
 .Left = Target.Left
 .Height = Target.Offset(1, 0).Top - Target.Top
 .Width = Target.Offset(0, 1).Left - Target.Left
 .Visible = True
 .SelStart = 0
 .SelLength = Len(.Text)
 .Activate
 End If
End With
End Sub