Zadanie karkołomne przy wielu wpisach, użyłem więc narzędzia Malarz formatów
i... nici z tego, bo Malarz formatów "nie pamięta" o indeksie dolnym i znów
trzeba wybrać Formatuj komórki (wcześniej zaznaczyć ten argument z wpisu,
który ma mieć indeks dolny) i dalej Czcionka: Indeks dolny. Ufff! Mało tego,
bo Malarz "nie pamięta" o tym indeksie dolnym, a zapamiętuje obramowanie
komórki i gdy jest to komórka, która wcześniej miała np. obramowanie w
pionie z lewej strony pogrubione, to mi to zmieni na obramowanie normalne.
Reasumując, chciałbym te czynności jakoś zautomatyzować, może makro
załatwiłoby wszystko? Najlepiej jednym przyciskiem. Chodzi mi więc o
następujące sformatowanie komórek:
1. Czcionka: Indeks górny oraz dolny
2. Wyrównanie Poziomo: Rozłożone (Wcięcie)
3. Obramowanie po skosie.
Jednocześnie chcę, aby zachowane było wcześniejsze sformatowanie komórki - w
moim przypadku jest to obramowanie komórki (raz z 4 stron normalne, a innym
razem dodatkowo z lewej strony w pionie pogrubione) oraz jej deseń.
Czy jest na to jakiś sposób? Proszę o poradzenie.
Janusz
Użyj takiego makra:
Sub Formatuj()
Dim ile As Long
With ActiveCell
ile = InStr(1, .Text, " ")
.Font.Superscript = True
.Characters(ile, Len(ActiveCell.Text) - ile + 1).Font.Subscript = True
.Borders(xlDiagonalUp).LineStyle = xlContinuous
.HorizontalAlignment = xlHAlignDistributed
End With
End Sub
--
Pozdrowienia
pxd74
Użytkownik "Janusz" <janusz...@neostrada.pl> napisał w wiadomości
news:g070k5$j8h$1...@nemesis.news.neostrada.pl...
Sub De_Formatuj()
Dim ile As Long
With ActiveCell
ile = InStr(1, .Text, " ")
.Font.Superscript = False
.Characters(ile, Len(ActiveCell.Text) - ile + 1).Font.Subscript = False
.Borders(xlDiagonalUp).LineStyle = xlNone
.HorizontalAlignment = xlCenter
End With
End Sub
Problem jest, gdy wcześniej scalę dwie lub trzy komórki a potem zastosuję
makro. Wtedy obie wpisane do komórki wartości przyjmują indeks dolny i
brakuje ukośnika (obramowaniae po przekątnej)...? Jak sobie z tym poradzić?
Poza tym zauważyłem, choć nie jest to większy kłopt, że przy wpisywaniu do
komórki wartości liczbowych np. 123 145 ze spacją po środku i po
zastosowaniu makra obie liczby mają indeks górny. Komórki standardowo mają
formatowanie ogólne, przy wcześniejszym sformatowaniu komórek na "tekstowe",
wszystko jest OK!
Pozdrawiam -
Janusz
Sub Formatuj()
Dim ile As Long
If (Selection.Borders(xlDiagonalUp).LineStyle = xlContinuous) = True Then
Call De_Formatuj
Else
With ActiveCell
ile = InStr(1, .Text, " ")
.Font.Superscript = True
.Characters(ile, Len(ActiveCell.Text) - ile + 1).Font.Subscript = True
.HorizontalAlignment = xlHAlignDistributed
End With
With Selection
.VerticalAlignment = xlCenter
.Borders(xlDiagonalUp).LineStyle = xlContinuous
End With
End If
End Sub
natomiast wpisanie "123 456" excel moze zinterpretowac jako wartosc 123456
pokazujac ją ze "spacją" - ale tak naprawde to jest formatowanie, a nie
prawdziwa spacja, wiec kod jej nie "widzi"
Użytkownik "Janusz" <janusz...@neostrada.pl> napisał w wiadomości
news:g0k717$49k$1...@atlantis.news.neostrada.pl...
Sub Formatuj()
Dim ile As Long
If (Selection.Borders(xlDiagonalUp).LineStyle = xlContinuous) = True Then
Call De_Formatuj
Else
With ActiveCell
ile = InStr(1, .Text, " ")
.Font.Superscript = True
.Characters(ile, Len(ActiveCell.Text) - ile + 1).Font.Subscript = True
.HorizontalAlignment = xlHAlignDistributed
End With
With Selection
.VerticalAlignment = xlCenter
.Borders(xlDiagonalUp).LineStyle = xlContinuous
End With
End If
End Sub
Sub De_Formatuj()