Kako v Word-u odebeljiti vsa števila?

Pomoč pri izdelavi makrov
Odgovori
aniors
Prispevkov: 4
Pridružen: Pe Avg 12, 2005 4:09 pm

pomoč

Odgovor Napisal/-a aniors »

Pozdravljeni

Imam en probelm ki ga ne znam rešiti. malo se mi svita ampak vseen.

npr imam stavek: V 7.deželi preko 7 gora je 76 vasi.
Zdaj me pa zanima kako bi jaz v VBA napisal programcek ki bi mi v textu odebelil samo števila 7,5,9. in še to samo števila ki so 'samostojna'. recimo 75 bi odebelilo, X75 pa ne. sam sem ze napisal nekaj kode ma mi ne deluje ravno najboljse:
Sub Barvaj()
Set dokument = ActiveDocument
For g = 1 To dokument.Words.Count
Set r = dokument.Words(g)
For j = 1 To r.Characters.Count
If r.Characters(j) Like "7" Then
r.Characters(j).Bold = True
Else
If r.Characters(j) Like "5" Then
r.Characters(j).Bold = True
Else
r.Bold = False
End If
End If
Next
Next
End Sub


predvsem me zanima kako zdruzis da so vsa stevila vkljucena v en 'If r.Characters(j) Like '

upam da mi bo kdo lahko pomagal kajti zelo mu bom hvalezen.
lp
andrej
admin
Site Admin
Prispevkov: 3691
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Najprej vas moram okarati glede naslova. Naslov 'Pomoč' ne pove popolnoma ničesar, saj vsakdo, ki piše v ta forum potrebuje neko vrsto pomoči (sicer ne bi pisal v forum!). Naslov sem zatorej spremenil v 'Kako v Word-u odebeljiti vsa števila?', kar je vsekakor mnogo bolj opisno. Prosim, da drugič izberete bolj smiselen naslov tematike.

Kar pa se tiče vprašanja pa je odgovor zelo preprost. Stvari ste se napačno lotili, saj je VBA makro direkten prepis (v angleščini seveda!) logične rešitve, ki se glasi: Za vsako besedo v aktivnem dokumentu preveri ali je število. Če je število potem jo obarvaj. No temu ustreza sledeča koda, ki reši vaš problem:

Koda: Izberi vse

' www.matjazev.net
' 13.08.2005
Sub ObarvajStevila()
    Dim w
    
    For Each w In ActiveDocument.Words
        If IsNumeric(w.Text) Then
            w.Bold = True
        End If
    Next
End Sub
lp,
Matjaž Prtenjak
Administrator
aniors
Prispevkov: 4
Pridružen: Pe Avg 12, 2005 4:09 pm

Odgovor Napisal/-a aniors »

Za naslov odprte teme se oproščam. res nesmiselno postavljen moj naslov.

hvala za podano kodo zgoraj vendar me zanima se nekaj:
kako dokolcim da so numeric samo recimo 6 7 8 . ostalih ne uposteva.

Oprosti ker tezim sam s tem resim marsikatero tezavo, ker imam za napisat več teh programčkov za razločevati znake.
admin
Site Admin
Prispevkov: 3691
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Dodatna zahteva samo še malce zaplete kodo :), nič več. V gornjem makru sva torej ugotovila ali je neka beseda številka ali ne. No sedaj pa makro nadgradiva tako, da:
  1. V primeru da imava število (sicer nima smisla)
  2. Predpostaviva da število ustreza
  3. Sprehodiva se skozi vse znake števila in če odkrijeva znak, ki je manjši od 6 ali večji od 8 in hkrati ni presledek (besede imajo na koncu presledek!) rečeva, da to število pač ne ustreza.
  4. Če ustrezajo vsi znaki potem je ok in barvava.

Koda: Izberi vse

' www.matjazev.net
' 13.08.2005
Sub ObarvajStevila1()
    Dim w
   
    For Each w In ActiveDocument.Words
        If IsNumeric(w.Text) Then
            Dim ustreza, c
            
            ustreza = True
            For Each c In w.Characters
                If (c < "6" Or c > "8") And c <> " " Then ustreza = False
            Next
            
            w.Bold = ustreza
        End If
    Next
End Sub
PS: Imam pa občutek, da gre tukaj za neko nalogo na kakšnem izpitu... Če je temu tako potem se bo potebno bolj potruditi, saj jaz šolskih nalog ne bom reševal :?
lp,
Matjaž Prtenjak
Administrator
Odgovori