Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

MALARZ FORMATÓW

855 views
Skip to first unread message

Janusz

unread,
May 8, 2008, 10:34:12 AM5/8/08
to
Wypełniam komórki danymi z indeksem górnym i dolnym oraz obramowaniem po
skosie (po przekątnej komórki). Są to następujące czynności:
1. Zaznaczenie komórki
2. Wpis do komórki np. AM B (AM spacja B)
3. Wybranie Formatuj komórki i dalej Czcionka: Indeks górny, Obramowanie po
skosie i Wyrównanie Poziomo: Rozłożone (Wcięcie)
4. Wyjście z Formatuj komórki
5. Zaznaczenie litery B (drugiego argumentu z wpisu AM B)
6. Ponowne wejście w Formatuj komórki i dalej Czcionka: Indeks dolny.

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

Janusz

unread,
May 9, 2008, 10:38:11 AM5/9/08
to

Może ktoś doradzić w temacie jak wyżej?

Janusz

unread,
May 10, 2008, 6:43:15 AM5/10/08
to
To może uproszczę zapytanie, jak jednocześnie wstawić do komórki indeks
górny i dolny? Próbowałem nagraniem makra, ale tego nie da się chyba zrobić?
Może jakoś połączyć indeks dolny z jednej komórki z indeksem górnym z
drugiej, aby po "zsumowaniu" otrzymać oba indeksy w jednej komórce.
Janusz

pxd74

unread,
May 10, 2008, 5:50:28 PM5/10/08
to
Użytkownik "Janusz" <janusz...@neostrada.pl> napisał w wiadomości
news:fvv3dv$rbg$1...@nemesis.news.neostrada.pl...
(...)

> 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ń.


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

Janusz

unread,
May 10, 2008, 6:18:02 PM5/10/08
to
Wielkie dzięki, o to mi chodziło, a nigdzie nie mogłem znaleźć rozwiązania
:)
Pozdrawiam -
Janusz

Janusz

unread,
May 11, 2008, 10:35:23 AM5/11/08
to
To makro działa świetnie, ale w razie pomyłki, tzn. gdy uznam, że w nie tą
komórkę wpisałem wartości i sformatowałem Twoim makrem, nie mam możliwości
wycofania się. Czy nie można w tym samym makrze dopisać procedury
odwracającej? W tej chwili dodałem w menu przycisk niestandardowy, pod który
podpiąłem Twoje makro, ale chcę pod tym samym przyciskiem (lub w inny
sposób) mieć możliwość anulowania makra. Jak to zrobić?

Janusz

unread,
May 13, 2008, 4:01:03 AM5/13/08
to
Witam,
Czy jest ktoś w stanie mi pomóc? Chodzi o zapis w makro procedury
wycofującej wcześniejsze formatowanie komórki.
Janusz

Użytkownik "Janusz" <janusz...@neostrada.pl> napisał w wiadomości

news:g070k5$j8h$1...@nemesis.news.neostrada.pl...

Snake Plissken

unread,
May 16, 2008, 7:05:54 AM5/16/08
to
moze cos takiego??

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


Janusz

unread,
May 16, 2008, 10:49:57 AM5/16/08
to
Dzięki, o to chodziło, ale czy nie można zapisać tych obu makr pod jednym
przyciskiem?

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

Snake Plissken

unread,
May 19, 2008, 3:53:27 AM5/19/08
to
w jednym kroku mozna sprobowac to zrobic np. badajac wystepowanie tego
przekreslenia:

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...

Janusz

unread,
May 19, 2008, 12:45:38 PM5/19/08
to
Wywala mi to makro, tzn. na żółto podświetlenie linii - Sub Formatuj(), a na
niebiesko linii - Call De_Formatuj.
Mam prośbę, czy mógłbyś to makro wkleić u siebie i wypróbować?
Janusz

Snake Plissken

unread,
May 20, 2008, 2:23:00 AM5/20/08
to
pewnie usunąłeś procedurę De_Formatuj :)
Powinieneś nowym kodem nadpisać TYLKO procedurę Formatuj, bo ta druga nadal
jest potrzebna co wynika własnie z polecenia
"call De_Formatuj"


Janusz

unread,
May 20, 2008, 3:46:01 AM5/20/08
to
Dzięki za szczere chęci, ale i tak nie mogę tego opanować, nie wiem, gdzie
umieścić to nadpisanie? Wszelkie próby spełzły na niczym...
Po prostu nie jestem na tyle biegły w tym cholernym makro, aby samemu sobie
poradzić.
Janusz

Snake Plissken

unread,
May 20, 2008, 4:46:01 AM5/20/08
to
oto co powinno znalezc sie w module ( swoja droga kod nie jest pewnie
optymalny )

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()

Janusz

unread,
May 20, 2008, 6:54:25 AM5/20/08
to
Dziękuję bardzo, działa! Także komórki, wcześniej scalone, są poprawnie
formatowane i "deformatowane". W tym przypadku, gdy scalę np. 3 komórki w
poziomie i sformatuję makrem, a następnie arkusz chcę zmodyfikować i usuwam
makrem formatowanie, to muszę dodatkowo usunąć scalenie, a potem "dołożyć"
obramowanie komórki w pionie. Pomimo tych drobnych utrudnień, makro jest
prawidłowe i działa skutecznie.
Pozdrawiam -
Janusz

0 new messages