Gdy edytujesz komórkę w Excelu masz dostęp tylko do zdefiniowanych wewnętrznie i prezentowanych na paskach narzędzi przycisków. Np możesz użyć pogrubienia, pochylenia, itp. I tu chciałbyś też posiadać przyciski do innych (niż wymyślił Microsoft) opcji formatowania np indeksu górnego czy dolnego. Jednakże Excel, gdy edytujesz tekst nie pozwala skorzystać z Twoich narzędzi edytowania! Dzieje się tak dlatego, że podczas edycji komórki zostają zdeaktywowane wszystkie zdefiniowane przez użytkownika makra. Pozostaje Ci zmienić format poprzez uroczą kombinację FORMAT|Komórka - okno dialogowe, lub dojść tam, gdy jesteś oblatany, poprzez kombinację CTRL+"1"
Private Sub UserForm_Activate()
TextBox1.Text = ActiveCell.Formula
End Sub
Private Sub btnSuper_Click()
Dim intStart As Integer
Dim intLength As Integer
intLength = TextBox1.SelLength
If intLength > 0 Then
intStart = TextBox1.SelStart + 1
ActiveCell.Characters(intStart, intLength).Font.Superscript = True
End If
End Sub
Private Sub btnSub_Click()
Dim intStart As Integer
Dim intLength As Integer
intLength = TextBox1.SelLength
If intLength > 0 Then
intStart = TextBox1.SelStart + 1
ActiveCell.Characters(intStart, intLength).Font.Subscript = True
End If
End Sub
Private Sub btnExit_Click()
Unload UserForm1
End Sub
Private Sub btnNormal_Click()
Dim intStart As Integer
Dim intLength As Integer
intLength = TextBox1.SelLength
If intLength > 0 Then
intStart = TextBox1.SelStart + 1
ActiveCell.Characters(intStart, intLength).Font.Superscript = False
ActiveCell.Characters(intStart, intLength).Font.Subscript = False
End If
End Sub
Zamknij okienko kodowe i okienko Twojej formy. Teraz trzeba napisać naprawdę krótkie makro wyświetljące tę formę. Tworzysz je jak każde inne makro, a powinno wyglądać tak:
Sub DoForm()
UserForm1.Show
End Sub
Możesz teraz zamknąć okno edytora VBA. Jeżeli teraz wskażesz jakąś komórkę i wywołasz to ostatnie makro (możesz go podpiąć pod jakąś ikonkę!) będziesz mógł poprawiać zawartość komórki lub pisać nową używając ikonek indeksu górnego i dolnego tak jak chcesz! Pamiętaj makro daje efekt w komórce nie w formie użytkownika.