kako do imen listov

Pomoč pri delu z MS Excelom
Odgovori
senbric
Prispevkov: 29
Pridružen: Sr Avg 24, 2005 12:56 pm

kako do imen listov

Odgovor Napisal/-a senbric »

pozdravljeni

ali ima kdo idejo, kako spraviti v tabelo imena vseh listov v zvezku?

Torej če imam v zvezku 20 listov, bi želel njihova imena na prvem listu v celicah A1 do A20.

hvala za pomoč
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Najlažje s preprostim makrom, ki vam ga prilagam spodaj:

Koda: Izberi vse

' www.matjazev.net
' 13.02.2006
Sub NarediSeznamVsehListov()
    Dim PisiNa As Worksheet
    Set PisiNa = Worksheets("list4")
    
    Dim vrstica As Long, kolona As Long
    vrstica = 1: kolona = 1
    
    Dim list As Worksheet
    For Each list In Worksheets
        PisiNa.Cells(vrstica, kolona) = list.Name
        vrstica = vrstica + 1
    Next
End Sub
V makru samo ustrezno popravite:
  • Ime lista, kjer želite rezultat (zamenjajte List4 z imenom vašega lista)
  • Določite prvo vrstico in kolono, kjer želite rezultate. Makro bo imena listov polnil od tam dalje po vrsticah navzdol
lp,
Matjaž Prtenjak
Administrator
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Pozdravljeni!

Poimenovanje listov v zvezku imam jaz rešeno z naslednjo kodo, ki deluje na vsakem listu (aktivnem):

Koda: Izberi vse

Sub Imena_listov()

Dim i As Integer

For i = 1 To Sheets.Count

    Cells(i, 1) = Sheets(i).Name
    
  Next i

'V celico D1 pa vpiše št. vseh listov

    Range("D1") = "Vseh listov v zvezku = " & Sheets.Count 
    
End Sub
Kje sem dobil to kodo ne vem, ali na tem ali kakem drugem forumu, ali sem jo pisal sam, ali samo kaj priredil, ker je že kar nekaj časa od tega.
Nato pa sem si zadal nalogo, da bi nek makro pogledal ali obstaja kakšen list z npr. imenom "Imena listov" in tam posodobil, (prepisal,napisal) ponovno vse liste v zvezku. Če lista z imenom ne najde, naj ga ustvari in
potem napiše vsa imena listov. Ob tem pa naj še naredi linke do vsakega lista. Torej, ko klikneš na celico z imenom lista, naj ta list postane aktiven. Malo sem snemal, pisal, prirejal snemano in se dokopal do sledečega:

Koda: Izberi vse

Sub Poisci_ustvari()


'Napiši vsa imena listov

For i = 1 To Sheets.Count

        If Sheets(i).Name = "Imena listov" Then
            Sheets(i).Select
            Imena_listov 'Tukaj se vrne v zgornji makro
        Exit Sub
    End If

Next i
    
    
    Sheets(Array(Sheets.Count)).Select
   
    Sheets(Array(Sheets.Count)).Copy after:=Sheets(Sheets.Count)
    
    Cells.Select
    Selection.Delete Shift:=xlUp
    Range("A1").Select ' Da ne ostane cel list označen

    Sheets(Sheets.Count).Name = "Imena listov"
    
    Imena_listov
    
    
End Sub

Verjetno se profesionalcu zdi tole zgoraj napisano čudno in bi imel kar nekaj pripomb, ali pa bi stvar rešil kako drugače! No, stvar čisto v redu dela, razen ene stvari: linki do listov z eno besedo delajo, z dvema pa
ne! "Sklic neveljaven" napiše. In zdaj me zanima zakaj? Aja pa popraviti sem moral prvi makro tako, da je ta zdaj takle:

Koda: Izberi vse

Sub Imena_listov()

Dim i As Integer

For i = 1 To Sheets.Count
    Cells(i, 1) = Sheets(i).Name

    'Dodano zaradi linkov

    ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), Address:="", _
    SubAddress:=Cells(i, 1).Value & "!A" & i, TextToDisplay:=Cells(i, 1).Value

     'konec dodanega	
    
Next i

    Range("D1") = "Vseh listov v zvezku = " & Sheets.Count
    
End Sub

Torej zdaj oba makra zgledata takole:

Koda: Izberi vse


Sub Imena_listov()

Dim i As Integer

For i = 1 To Sheets.Count
    Cells(i, 1) = Sheets(i).Name

    'Dodano zaradi linkov

    ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), Address:="", _
    SubAddress:=Cells(i, 1).Value & "!A" & i, TextToDisplay:=Cells(i, 1).Value

     'konec dodanega	
    
Next i

    Range("D1") = "Vseh listov v zvezku = " & Sheets.Count
    
End Sub

'========================================

Sub Poisci_ustvari()


'Napiši vsa imena listov

For i = 1 To Sheets.Count

        If Sheets(i).Name = "Imena listov" Then
            Sheets(i).Select
            Imena_listov 'Tukaj se vrne v zgornji makro
        Exit Sub
    End If

Next i
    
    
    Sheets(Array(Sheets.Count)).Select
   
    Sheets(Array(Sheets.Count)).Copy after:=Sheets(Sheets.Count)
    
    Cells.Select
    Selection.Delete Shift:=xlUp
    Range("A1").Select ' Da ne ostane cel list označen

    Sheets(Sheets.Count).Name = "Imena listov"
    
    Imena_listov
    
    
End Sub
Upam, da sem bil jasen kje je težava, pa tudi kakšnega nasveta se nebi branil

lp,

Cedra
admin
Site Admin
Prispevkov: 3692
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

V algoritem se ne bom spuščal, ker pravite da vam deluje. Problem je samo pri povezavi in ta se pojavi zaradi presledkov v imenu. Kodo za povezavo popravite tako, da ime zaprete v enojne narekovaje, kot sem zapisal spodaj:

Koda: Izberi vse

    ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), _
                               Address:="", _
                               SubAddress:="'" & Cells(i, 1).Value & "'!A" & i, _
                               TextToDisplay:=Cells(i, 1).Value
PAZITE na enojni narekovaj pred Cells in pred "!A".
lp,
Matjaž Prtenjak
Administrator
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

zdravo!

Hvala za rešitev, zadeva zdaj deluje kot urca...

lp,

cedra
Odgovori