Nisam pratio prethodne nastavke, ali ovaj deo mi se ne čini problematičnim.
Citat:
Trebala bi makro naredbu koja bi mi zaštitila sve popunjene ćelije od 12 reda (uvijek) od promjena ...
Postoji mnogo načina da se to uradi, ali mi se čini najlakše da se opseg kopira sam u sebe po vrednosti. Pošto nisam siguran da li se radi samo o podacima na jednom listu ili više, evo procedure koja to radi zavisno od lista koji se zada:
Code:
Sub ToValue(sh As Worksheet, rwStart As Long, rwEnd As Long)
' Pretvara sve formula u zadatom listu sh
' u redovima od rwStart do rwEnd u vrednosti
'
' P. Jovanovic za elitesecurity forum
sh.Rows(Str(rwStart) & ":" & LTrim(Str(rwEnd))).Copy
sh.Cells(rwStart, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
Poziv ove procedure je iz nekog drugog makroa, uz zadavanje potrebnih parametara. Npr. za aktivni list i redove od 12 do 100
Code:
Sub Test()
ToValue ActiveSheet, 12, 100
End Sub
Citat:
...a cjelu radnu knjigu pospremila bi dajući joj naziv po podacima spojenim iz dvije ćelija a to su uvijek ćelija B4 i G4. Putanja pospremanja bi bila C:\Razno\..C4+G4.xls
Za čuvanje radne sveske, pod novim imenom koristi se metod SaveAs (za to je već bilo dosta primera na forumu). Prethodn je potrebno "pripremiti" naziv pod kojim treba sačuvati radnu svesku. Npr:
Code:
NazivSveske = "C:\Razno\" & Trim(ActiveSheet.Range("C4").Text) & Trim(ActiveSheet.Range("G4").Text)
Trim je ovde da obriše eventualne blankove višak za svaki slučaj. To možemo da ubacimo u prethodni makro, tako da spojimo ove dve stvari koje si tražila.
Code:
Sub Test()
Dim NazivSveske As String
ToValue ActiveSheet, 12, 100
NazivSveske = "C:\Razno\" & Trim(ActiveSheet.Range("C4").Text) & Trim(ActiveSheet.Range("G4").Text)
ActiveWorkbook.SaveAs NazivSveske
End Sub
Nije to loše Rembrante, samo što ne bi dodao još malo boje?