< návrat zpět

MS Excel


Téma: VBA - Automatické přidání a pojmenování listů rss

Zaslal/a 4.8.2017 14:16

Dobrý den,
mohla bych poprosit o radu?
Mám v jednom listu (C7:A350) hodnoty (jsou tam i prázdné buňky) a chtěla bych ke každé této hodnotě vytvořit nový list s odpovídajícím názvem. Tedy hodnota v buňce=název listu + po kliknutí na určitou buňku by se zobrazil odpovídající list.
Existuje na to nějaký postup?
Děkuji.
MO Professional Plus 2010

Příloha: zip37118_sesit1.zip (32kB, staženo 44x)
Zaslat odpověď >

Strana:  « předchozí  1 2 3   další »
#037164
avatar
@xlnc
No pomaly ma už nebaví každému druhému opakovať, že má dať prílohu. Niekedy tá príloha aj tak odporuje pôvodnému zadaniu. A v tomto prípade tá príloha bola pridaná až neskôr.
K tomu C7:A350. Zistil som, že VBA cyklus funguje aj s takouto oblasťou. Ale Podľa prílohy asi malo byť C7:C350.
A rada typu "Vemte mu ten počítač" je niekedy síce lákavá, ale jej časté opakovanie je skôr na škodu.citovat
#037178
avatar
Máte pravdu, jsem úplný začátečník. Nikdy jsem práci s makry nevyužívala. Nyní bych se to chtěla naučit. Proto pokud máte nějaké tipy na webové stránky, knihy či jiné materály, kde bych se o VBA mohla dozvědět více a od základu, budu velice ráda.citovat
#037179
avatar

Anicka napsal/a:

Proto pokud máte nějaké tipy na webové stránky, knihy či jiné materály

Perfekt stránky tady:http://excelplus.net/
Nejlepší guru - http://wall.cz/index.php?m=profile&id=xlnccitovat
#037180
avatar
Googel
"makra v excelu"
určite si niečo vyberieš.
A tiež
"funkcie excel česky"citovat
icon #037185
avatar
K tomu, kde začať so štúdiom VBA, mám nasledujúci názor:
Internet je určite dobrý zdroj a pokiaľ už človek akú-takú znalosť má, tak vhodným výberom kľúčových slov nájde riešenie problému na internete väčšinou rýchlo, páč pravdepodobne úplne všetko už bolo niekde na internete publikované. Ničmenej, na to, aby znalosť dotyčného človeka bola aspoň trochu systematická, tak určite nie je na škodu na začiatok siahnuť po nejakej publikácii, v prípade VBA v prostredí Excel to môže byť niektorá z mnohých kníh, ktoré napísal John Walkenbach.citovat
#037666
avatar

marjankaj napsal/a:

Skús tento kód
Sub VytvorList()
Dim tento As String
tento = ActiveSheet.Name
For Each bunka In Range("C7:A350")
If bunka <> "" Then
On Error Resume Next
Sheets.Add After:=Worksheets(Sheets.Count): ActiveSheet.Name = bunka
On Error GoTo 0
End If
Next bunka
Sheets(tento).Activate
End Sub
Ale ak tam už taký list bude, tak čo sa má urobiť?


Ahoj, navázal bych na tuto odpověď.
Potřebuji nazvat list datumem a časem uložení.
Podle vzoru výše jsem udělal následující makro:

Sub VytvorList()
Dim tento As String
tento = ActiveSheet.Name
Sheets.Add After:=Worksheets(Sheets.Count):
Range("B2").Value = "Aktualizováno"
Range("B3").Value = Now
Range("B3").Select
Selection.NumberFormat = "d.m.yyyy h.mm.ss"
bunka = Range("B3").Value
ActiveSheet.Name = bunka
Sheets(tento).Activate
End Sub

Vypisuje to ale chybu pro nepovolené pojmenování listu:
"Run-time error '1004'. Zadali jste neplatný název listu........"
Přitom, když zkopíruju hodnotu z této buňky a vkopíruju ji do názvu listu, tak ho pojmenuje nastaveným formátem, ikdyž v buňce jsou nepovolené znaky dvojtečky ":".
Jak přenést do názvu místo dvojteček jen tečky?
Dík za pomoc.citovat
icon #037667
avatar
Aby som ta zbytocne neplietol, tak uvediem iba jednoriadkovu zmenu v kode, ktory si vytvoril (nie je to optimalne, ale pre nazornost postaci):

Riadok:Selection.NumberFormat = "d.m.yyyy h.mm.ss"

Nahrad tymto:Selection.Value = WorksheetFunction.Text(Selection, "d.m.yyyy h.mm.ss")citovat
#037668
avatar
Díky moc. Funguje to. Provedl jsem ještě drobné úpravy v pořadí kódu, protože jsem to měl špatně poskládáno. Dík.citovat
#037845
avatar
Zdravím,
mám ještě jeden dotaz. Potřebuji ošetřit případ, že by se někdo makrem pokusil
založit list se stejným názvem. V tomto případě vyskočí chyba:
Run-time error '1004': Tenhle název je již obsazený. Zkuste jiný.
Zkoušel jsem to v kódu ošetřit, ale není to úspěšné - do cyklu If to nedojde.
Vzniklý list ale potřebuji odstranit.
Prosím o radu. Předem děkuji.


Sub VytvorList()
Sheets.Add After:=Worksheets(Sheets.Count):
Range("B2").Value = "Aktualizováno:"
Range("B3").Value = "=Zadávací_list!F7"
Range("B3").Select
Selection.Value = WorksheetFunction.Text(Selection, "d.m.yyyy h.mm.ss")
bunka = Range("B3").Value
ActiveSheet.Name = bunka
If Err.Number = 1004 Then
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
MsgBox ("Nelze provést! => List s požadovanými daty již existuje! Proveďte novou aktualizaci dat tlačítkem Načti data na záložce Zadávací_list.")
Sheets("Zadávací_list").Select
End
End If
tento = ActiveSheet.Name
Sheets(tento).Activate
Range("A11").Select
ActiveWindow.FreezePanes = True
End Sub
citovat
#037846
elninoslov
Nechce sa mi čítať celú tému, skúsim iba od pása tipnúť, čo má asi robiť Váš posledný kód:
Sub VytvorList()
Dim bunka As String, test As Long

bunka = Format(Sheets("Zadávací_list").Range("F7").Value2, "d.m.yyyy h.mm.ss")
On Error Resume Next
test = Len(Sheets(bunka).Name)
On Error GoTo 0

If test <> 0 Then
MsgBox ("Nelze provést! => List s požadovanými daty již existuje!" & vbNewLine & "Proveďte novou aktualizaci dat tlačítkem Načti data na záložce Zadávací_list.")
Else
Application.ScreenUpdating = False
Sheets.Add After:=Worksheets(Sheets.Count):
With ActiveSheet
.Range("B2").Value = "Aktualizováno:"
.Range("B3").Value = bunka
.Name = bunka
.Range("A11").Select
End With
ActiveWindow.FreezePanes = True
Application.ScreenUpdating = True
End If
End Sub
citovat

Strana:  « předchozí  1 2 3   další »

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