word 2007
Potrebujem použiť makro vo worde.
Predtým sa makro používalo v exceli, ale došlo k zmene spracovávaniu dát.
Tabuľka sa vytvorí klasickým kopírovaním a vložením. Potrebujem podľa premennej
DODATOK,SLUžBA, PRíSLUžBA NEOP a PREKLAD. podfarbiť celý riadok.(pôvodne len bunku)
Ešte riešim podfarbenie prázdnych riadkov - oddelovačov medzi sálamil
DOPLNENIE Makro na podfarbenie prázdnych riadkov oddeľovačov medzi sálami funguje.
DOPLNENIE2 Makro formát funguje na konkrétny počet riadkov.
Zmenila som
PREKLAD na podfarbenie riadku, lebo s podfarbením bunky mi to nefungovalo.
Pridaním a odstránením riadkov makro reaguje inak, lenže ja dopredu neviem, koľko riadkov, či sál a čísel na sále, a kde budú aké poznámky, to bol len názorný príklad, čo všetko sa tam môže vyskytnúť.
Je možné doplniť príkaz: najprv spočítaj riadky a potom aplikuj makro. Šlo by to?
DOPLNENIE3 počítanie riadkov pridané, makro format a farba spojené dokopy.
Code:
Sub formatafarba()
Dim i As Long, j As Long, k As Long, d As Long
With ActiveDocument
For i = 1 To .Tables.Count
With .Tables(i)
For j = 1 To .Rows.Count
With .Rows(j)
d = 0
For k = 1 To .Cells.Count
d = Len(.Cells(k).Range) + d
Next k
If d < 31 Then .Shading.BackgroundPatternColor = wdColorYellow
End With
Next j
End With
Next i
End With
Application.ScreenUpdating = False
a = Array("dodatok", "príslužba", "služba", "neop.", "preklad")
b = Array(wdColorGreen, wdColorBlue, wdColorBlue, wdColorRed, wdColorPlum)
For j = 0 To 4
For i = 1 To 17
With Selection.Find
.ClearFormatting
.Text = a(j)
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.MatchWholeWord = True
.Execute
End With
With Selection
.HomeKey Unit:=wdLine
.MoveLeft Count:=14, Extend:=wdExtend
.Font.Color = b(j)
.Font.Bold = True
.MoveDown Unit:=wdLine, Count:=1
End With
Next i
Next j
Application.ScreenUpdating = True
End Sub
VYRIEŠENÉ Funguje.
DOPLNENIE4
Som si uvedomila že For i = 1 To 74, je blbosť.
Zmenila som na 10. Je predpoklad, že viac ako počet 5 nebude.
(Viac ako 5 dodatkov, 5 neop., 5 príslužba, 5 služba, 5 príslužba )
Možno by stačilo aj 5.
Prepočet sa zrýchlil.
Dim i As Long, j As Long, k As Long, d As Long
With ActiveDocument
For i = 1 To .Tables.Count
With .Tables(i)
For j = 1 To .Rows.Count
With .Rows(j)
d = 0
For k = 1 To .Cells.Count
d = Len(.Cells(k).Range) + d
Next k
If d < 31 Then .Shading.BackgroundPatternColor = wdColorYellow
End With
Next j
End With
Next i
End With
End Sub
Je možné doriešiť predchádzajúce makro?
Nejakým príkazom, najprv spočítaj riadky a potom aplikuj formát?
Ale ak je viac tabuliek tak treba počítať za všetky.
Ale lepšie je spočítať počet tých slov napr."neop"
Pridala som spojené makro do otázky
Len otázočka, teraz For i = 1 To 17 má teraz nejaký význam? Mám to vyhodiť?
počet "neop" je 20
nechať to cyklovať na počet riadkov je zbytočné predlženie výpočtu.
možno niekto dá efektívnejšie riešenie. Ja makrá vo worde veľmi neovládam.
Vystačím si teda s tým čo mám.
Urobila som si prepočet sál.
Viac ako 74 riadkov by to nemalo byť.(aj s prázdymi riadkami - celá tabuľka)
Ak budú mať všetky sály po tri čísla a dve sály po 10.
17 som nahradila 74(ako riadky) teraz to funguje celkom dobre.
Sub podfarbiprazdnebunkyzltou()
Dim i As Long, j As Long, k As Long, m As Long, d As Long, x As String
Application.ScreenUpdating = False
a = Array("dodatok", "príslužba", "služba", "neop")
b = Array(wdColorGreen, wdColorBlue, wdColorBlue, wdColorRed)
With ActiveDocument
For i = 1 To .Tables.Count
With .Tables(i)
For j = 1 To .Rows.Count
With .Rows(j)
' vyfarbenie PREKLAD
x = Left(.Cells(.Cells.Count), 16)
x = Left(x, Len(x) - 2)
If x = "preklad" Then .Cells(.Cells.Count).Shading.BackgroundPatternColo r = wdColorLightGreen
' vyfarbenie riadkov
For m = 0 To 3
If x = a(m) Then .Select
With Selection
.Font.Color = b(m)
.Font.Bold = True
End With
Next m
' oddelenie sál
d = 0
For k = 1 To .Cells.Count
d = Len(.Cells(k).Range) + d
Next k
If d < 31 Then .Shading.BackgroundPatternColor = wdColorYellow
End With
Next j
End With
Next i
End With
Application.ScreenUpdating = True
End Sub
Doplnila som otázku, nakoniec som to obmedzila na 5.
Ešte technická otázoočka: akú wdColorGray? mám zvoliť, aby bola poradne vyditeľná? Teraz mám namiesto nej BlueGray
https://docs.microsoft.com/en-us/off...i/word.wdcolor