< návrat zpět

MS Excel


Téma: Přejmenování listu rss

Zaslal/a 27.4.2009 21:19

Ahoj,

nutně potřebuji poradit s malým problémem. Mám rozpracovaný projekt v excelu a potřebuji abych mohl název listu přejmenovat z buňky. V praxi by to vypadalo asi tak, že na prvním listu budu mít menu o 10 řádcích a dále budu mít stejný počet i listů v sešitě. Co řádek to jeden list. Při změně názvu v př. 3 řádku třeba na jméno Pavel, bych potřeboval, aby se třetí list automaticky přejmenoval taky na Pavel. Je to reálné udělat nějakým vzorcem? Pokud ano, moc prosím o každou radu. Díky Martin

Zaslat odpověď >

#000492
avatar
Ahoj, mi funguje toto makro:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim listek As Worksheet, x As Integer
For x = 1 To 10
Me.Worksheets(x).Name = Range("a" & x)
Next x
End Sub

Tedy událostní procedura sešitu. Předpokládám požadované názvy v buňkách a1 ... a10. Pokud to máš jinde, tak si to makro upravíš. Nemá to chybovou rutinu, ale to už si doděláš.
Je to rychlovka, Petr možná přijde s něčím elegantnějším a "úplným". 5citovat
#000493
avatar
No říkám rychlovka. Bude to samozřejmě událostní procedura listu, na kterém máš to menu. Pak by se makro v příslušných řádcích změnilo takto:
For x=2 to 11
Me.Parent.Worksheets(x).Name = Range("a" & x)

Ale to smolím jen z hlavy, tak to prubni. 6citovat
icon #000494
admin
Myslím, že "kolokol" to udělal dobře. Jen jsem doplnil kontrolu chyb. Názvy listů budou v buňkách B2:B11 = udělal jsem malou tabulku jako menu.

První list slouží jako menu a makro s ním nepracuje. Kód jsem vložil do listu s menu.


Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer

On Error GoTo chyba
For x = 1 To 10
If Range("B" & x + 1) <> "" Then Worksheets(x + 1).Name = Range("B" & x + 1)
Next x
Exit Sub

chyba:
MsgBox "Název listu musí být jedinečný. Zadejte jiný název listu", vbCritical, "Chyba zadání"
End Sub
citovat
#000503
avatar
Všem moc děkuji, to je přesně to co jsem potřeboval. Díky moc za radu.
Martincitovat
#016906
avatar
Ahoj všem doufám, že mi tohle léma pomůže ještě někdo doplnit o jdnu věc a to přeskakování prázdných buněk.
-----------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer

On Error GoTo chyba
For x = 1 To 10
If Range("B" & x + 1) <> "" Then Worksheets(x + 1).Name = Range("B" & x + 1)
Next x
Exit Sub

chyba:
MsgBox "Název listu musí být jedinečný. Zadejte jiný název listu", vbCritical, "Chyba zadání"
End Sub
-----------------------------------------------------
pomohl by mi prosím někdo s tím aby to při tom když to narazí na prázdnou buňku ve sloupci tak aby ji to přeskočilo a vzalo to až další Název listu. Dám příklad budui mít ve sloupci B jména například B1, B2, B3 budou jména a B4 bude prázdné tak aby tu prázdnou buňku přeskočilo a nebo pokud by například v B4 byla vepsána hodnota nepřiřazeno tak aby to Přeskočilo jen buňky s vyplněným nepřiřazeno.

Všem ještě jednou moc díky.citovat
#016912
avatar
cize ak dobre rozumiem , ak mas napriklad bunku v piatom riadku prazdnu tak sa ma ako nazov pre piaty list pouzit obsah az z nasledujucej plnej bunky (napr z riadku 6),
alebo sa v tom pripade iba nema premenovat list c 5 (mimochodom takto to momentalne funguje)?citovat
#017763
avatar

misocko napsal/a:

cize ak dobre rozumiem , ak mas napriklad bunku v piatom riadku prazdnu tak sa ma ako nazov pre piaty list pouzit obsah az z nasledujucej plnej bunky (napr z riadku 6),
alebo sa v tom pripade iba nema premenovat list c 5 (mimochodom takto to momentalne funguje)?


Ahoj já bych potřebovala, aby to prázdné buňky přeskočilo nebo ještě lépe aby to uvedlo název neobsazeno + (kolikáté neobsazeno) tak, aby byla dodržena podmínka, že každý list musí mít jedinečný název.citovat
#017764
avatar
A tak už jsem zjistila jak to funguje a potřebovala bych to doplnit o to, že pokud bude buňka, která má obsahovat jméno prázdná, tak to automaticky skryje list. Jo a ještě jsem zjistila, že pokud pojmenuji buňku (automaticky list), tak se sice přejmenuje, ale pokud jméno smažu v buňce, tak se přeskočí ale zůstane původní jméno listu nešlo by to jméno nějak změnit zpět na listX? Děkuji všem za odpověď. Luciecitovat
#017766
avatar
Myslíš něco takového?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
On Error GoTo chyba
For x = 1 To 10
Sheets(x + 1).Visible = True
If Range("B" & x + 1) = "" Then
Sheets(x + 1).Name = "List" & x + 1
Sheets(x + 1).Visible = False
Else
Sheets(x + 1).Name = Range("B" & x + 1)
End If
Next x
Exit Sub
chyba:
MsgBox "Název listu musí být jedineèný. Zadejte jiný název listu", vbCritical, "Chyba zadání"
End Sub


Pokud je buňka prázdná tak se list skryje a přejmenuje se na listX.citovat
#017769
avatar

cmuch napsal/a:

Myslíš něco takového?

Pokud je buňka prázdná tak se list skryje a přejmenuje se na listX.


Díky cmuchu jsi zlato. Toto jsem potřebovala. 5citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Spustit makro v určitý čas

Baja • 28.11. 20:11

Spustit makro v určitý čas

elninoslov • 28.11. 17:09

Spustit makro v určitý čas

Baja • 28.11. 12:51

Spustit makro v určitý čas

elninoslov • 28.11. 0:31

Spustit makro v určitý čas

Baja • 27.11. 22:22

Spustit makro v určitý čas

Anonym • 27.11. 22:20

Spustit makro v určitý čas

elninoslov • 27.11. 21:11