Palo235 - nerobil som s debugerom "ale asi to je krokovanie makra"
- ide o to ze slide 2 kde je Tabulka Object 48 a Nadpis Object 47 som cely slide s ctrl c a ctrl v rozmnozil. a aj po kontrole zostalo zachovane object 47 a 48. tak netusim preco zrovna object je chybny.
- a netusim ako tu chybnu hlasku obist kedze neviem jej cislo na doplnenie do dataerr
- dalsia vec keby som ju obisiel neviem ci mi to nevyneha 92 riadok co postupne doplna do slide
V skratke:
1) ešte k tvojmu kodu. Z kódu čo si prilepil, je zrejmé, že príslušný cyklus po poslednej položke nekončíš. T.j. po poslednom x+1 ti to musí zhučať. Použi "
For ..Next", alebo ešte lepšie "
For Each .. Next" (pozri si help)
2) Debugovanie je aj "krokovanie" ale napr. aj zistenie si hodnoty aktuálnych premenných:
Zastav si kód cez
F9 na ľubovoľnom riadku, klik pravým tlač. nad premennou (napr. X) a zvol "
Add Watch", pripadne v "
Immediate Window" (CTRL+G) zobraz hodnotu lubovolnej premennej: ? x,
atď.
Je toho na celé školenie.
Na odchytenie chýb si pozri v helpe konštrukciu "
On Error"
jednoducho si vieš otestovať či ti objekt existuje, ak zastavíš kód na riadku
"
Set objXLbookTabulka = Application.ActivePresentation.Slides(x).Shapes("O bject 48").OLEFormat.Object"
a do "Immediate Window" napíšeš:
? Application.ActivePresentation.Slides(92).Shapes(" O bject 48").name
alebo si zmeň niečo na poslednom slide a takto si otestuj zmenenú hodnotu príslušného objektu na 92
Prípadne použi túto fn na otestovanie existujúcich objektov:
Sub Kontrola()
Dim i, j As Integer
On Error Resume Next
For i = 1 To Application.ActivePresentation.Slides.Count
Set xSld = Application.ActivePresentation.Slides(i)
Debug.Print xSld.Name
If xSld.Shapes.Count > 0 Then
For j = 1 To xSld.Shapes.Count
Debug.Print xSld.Shapes(j).Name
Next j
End If
Debug.Print vbCrLf
Next i
End Sub
P.