Da isprobaš da li radi jednostavno startuješ makro koji si kreirao . Pre izvršavanja proveriće se da li je program sintaksno ispravan i ukazati na eventualne greške. Ako program radi to što tebi treba onda je OK - nisi detaljno objasnio ceo postupak.
U tvom programu greške se odnose na pozivanje labela. Labele se u VBA navode kao tekst sa dve tačke na kraju
Dakle umesto 10
PocetakPetlje:
a umesto Go To 10:
Go To PocetakPetlje
Iza Else ne treba dvotačka dakle
Code:
If shDest.Cells(i, 1).Value = 0 Then
shDest.Cells(i, 1).Value = shSource.Cells(1, 2).Value
shDest.Cells(i, 2).Value = shSource.Cells(2, 2).Value
shDest.Cells(i, 3).Value = shSource.Cells(3, 2).Value
GoTo Kraj
Else
i = i + 1
GoTo PocetakPetlje
End If
Usput ovde nema nigde brisanja sadržaja. Da obrišeš sadrćaj ćeljie koristiš metodu ClearContents, npr.
shSource.Cells(1, 2).ClearContents
Dugme se može postaviti na list, umesto na toolbar izborom iz palete alata Forms, pa potom dodeljivanjem makroa dugmetu kao što je već opisano u ranije spomenutoj temi.
Da li si pogledao i linkove za VBA
http://www.elitesecurity.org/t222802-0#1341502. Sigurno je lakše učiti na primerima nego metodom uzaludnih pokušaja.
Zaboravio sam da odgovorim za potprogram.
Potprogram se kreira kao i glavni program unutar strukture Sub ... End Sub unutar modula.
Moguće je da potprogram ima jedan ili više parametera. Npr.:
Code:
Sub Test (p1 As Integer, p2 As String)
' Ovde slede komande potprograma
End Sub
Iz glavnog programa potprogram se poziva navodjenjem imena (i parametara ako ih ima) dakle
Code:
Sub GlavniProgram
' Komande glavnog program
'Poziv potprobgama sa dva parametra
Test 2, "Proba"
' Ostale komande
End Sub
[Ovu poruku je menjao Jpeca dana 01.04.2007. u 18:17 GMT+1]
Nije to loše Rembrante, samo što ne bi dodao još malo boje?