Käytössäni on Excel jossa on kuusi välilehteä jotka ovat oletuksena nimettynä Taul1, Taul2 jne.. Toive on saada nimettyä taulukot uudelleen laskentataulukon soluun syötetyn tekstin/numeron mukaiseksi.
Eli jos välilehden Taul1 soluun A1 kirjoittaa Tarkastus, se muuttaisi välilehden nimen Taul1 nimestä Tarkastukseksi.
Eli jos välilehden Taul1 soluun A1 kirjoittaa Tarkastus, se muuttaisi välilehden nimen Taul1 nimestä Tarkastukseksi.
Vastaukset 9
Vanhimmat
Isot monisivuset taulukot kanattaa suunnitella etukäteen, jotta nimeämiset ei aiheuta ongelmia sen käytössä.
MS office kannatta muutenkin heitää pois koska se on surkee ja vakoilee!
Tuohon pitää tehdä snadi makro.
Makrot on turvallisuusriski.
En kysyisikään asiaa jos se olisi simppeli. Kyseinen Excel on suojattu työväline johon ei voi laittaa oletus nimiä välehdille. Nimet muotoutuvat sen mukaan mitä tietoja millekin lehdelle täytetään, esim. tarkastus, auditointi jne..
Löysin täältä vanhemmista keskusteluista kaavaa kyseiseen asiaan vaan eipä toiminut. Liekö jo Ms Office versio muuttunut ajan myötä niin paljon etteivät vanhemmat kaavat enää toimi.
Ei onnistu kaavoilla. Makrolla onnistuu. Hae vaikka "excel rename worksheet based on cell value" Teet sitten makron, joka ajetaan aina kun haluttu solu päivittyy. Siihen löytyy ohjeita esim. hakemalla "excel run macro when certain cells changes value".
Kiitos vinkistä. Yritän tutustua tuohon makro maailmaan, eiköhän se siitä....
Klikkaa työkirjan välilehteä ja valitse Näytä koodi.
Lisää kaikkiin haluamiisi välilehtiin (Microsoft Excel Objects) koodi:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Name = ActiveSheet.Range("A1")
End Sub
Tallenna tiedosto xlsm -muodossa, makroja sisältävänä taulukkona.
Kirjoita soluun A1 haluamasi teksti ja <naps> se vaihtaa myös välilehden nimeä.
Ei paljoa tarvitse kun osaa...
Ihan turhaa kirjoitella joka taulukolle omaa makroa
Fiksumpi tapa
ThisWorkbook moduuliin...
tsekataan , että vain A1 on muuttunut
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Sh.Range("A1")) Is Nothing Then
Sh.Name = Sh.Range("A1")
End If
End Sub