[ zorro43 @ 21.11.2014. 21:41 ] @
Bok!
Imam jedan problem u excelu.
U radnoj knjizi imam 1 sheet sa imenom JELOVNIK. Hteo bih da makro napravi 2 kopije tog sheeta. Jednoj kopiji treba dati ime JELOVNIK_OH a drugoj JELOVNIK_TIARA. Ako sheetovi sa ovim imenima već postoje neka putem msgboxa javi da postoje. U tom slučaju ne trebam kopije ali ako jih nema i makro jih napravi neka opet putem msgboxa javi da je napravio kopiju sa imenom JELOVNIK_OH i kopiju sa imenom JELOVNIK_TIARA. Dalje, ako postoji samo jedna kopija, neka napravi onu koje nema i opet javi, da je napravio kopiju sheeta sa imenom (kopija koje nema) a drugu nije napravio jer več postoji.

Nadam se da ste me razumeli.
Pozdrav iz SLO.
[ Jpeca @ 22.11.2014. 12:00 ] @
Prema tvojim zahtevma čini me se zgodno da napraviš funkciju koja kopira list sa određenim imenom u zadato ime (da se ne ograničimo na ovaj poseban slučaj možda se iskoristi za još nešto) i kao rezultat vraća string sa rezultatom akcije: "Kreiran list" ili "Već postoji"

Code:
Private Function CopySheet(strShSource As String, strShDest As String) As String
' Ako ne postoji shDest kreira ga na osnovu shSource
' Kao izlaz  formira se poruka  o rezultatu akcije
' P.Jovanovic za elitesecurity.org
'
 If WorksheetExists(strShDest) Then
 ' Ako vec  postoji
    CopySheet = "Radni list " & strShDest & " već postoji"
 Else ' Ako ne kopira
    ThisWorkbook.Sheets(strShSource).Copy _
         after:=ActiveWorkbook.Sheets(strShSource)
    ActiveSheet.Name = strShDest
    CopySheet = "Radni list " & strShDest & " je kreiran kao kopija " & strShSource
 End If
End Function


Sad ovu funkciju u tvom slučaju pozivaš dva puta sa odgovarajućim parametrima i "sabiraš" poruke. Na kraju sa MsgBox prikažeš celu poruku. U navedenoj funkciji koristi se funkcija WorksheetExist, koja jednostavno daje True/False za zadato ime, a na osnovu toga da je rezultat Sheets(WorksheetName).Name Error ako ne postoji list sa tim imenom.