< návrat zpět

MS Excel


Téma: Ošetření chyby. rss

Zaslal/a 30.5.2011 18:21

StalkerAhoj potřeboval bych pomoct s ošetřením chyby v makru, které mi vkládá nový list od sešitu. Už si s tím nějakou dobu hraju a nedaří se. 3
Situace: Pomocí tlačítka vyvolám inputbox, do kterého uživatel napíše požadovaný název listu a list se vytvoří - to mi běhá bez problému. Situace se ovšem změní když by se zadal název listu, který už je v sešitu obsažen (duplicita). Tady makro havaruje. Snažil sem se tuto situaci řešit, ale né zcela úspěšně.
Prosím o radu nebo nakopnutí správným směrem. Díky

Private Sub CommandButton1_Click() 'vloží nový list
Application.ScreenUpdating = False
x = Application.InputBox("Zadejte jméno nového listu", "Vložení nového listu")
If x = vbNullString Or x = False Then
Exit Sub
End If

Sheets.Add after:=Worksheets(1)
ActiveSheet.Name = x
Sheets("index").Select
Sheets(x).Select

Application.ScreenUpdating = True

End Sub

Zaslat odpověď >

#005113
avatar
opač 7


Sub hh() 'vloží nový list
Application.ScreenUpdating = False
x = Application.InputBox("Zadejte jméno nového listu", "Vložení nového listu")
If x = vbNullString Or x = False Then
Exit Sub
End If

For Each llist In ActiveWorkbook.Sheets
If llist.Name = x Then
MsgBox ("meno listu uz existuje")
Exit Sub
End If
Next llist

Sheets.Add after:=Worksheets(1)
ActiveSheet.Name = x

Sheets(x).Select

Application.ScreenUpdating = True

End Sub
citovat
#005116
Stalker
Díky chlape za rychlou reakci. Tak sem ten Tvůj kód vyzkoušel a funguje, bohužel né tak jak sem si představoval, že bude. Ten sešit bude využívat více lidí, proto se snažím udělat to co možná nejvíce "blbuvzdorné". Situace je taková, že zadám jméno přes inputbox (např: Leden)- vytvoří se list a pokud se pokusím zadat stejné jméno (Leden), tak se ukáže msgbox s upozorněním a makro se ukončí to je super, ale když v sešitu zůstanou defaultně vložené listy (3 - List1, List2, List3) a uživatel zadá např do inputboxu "List2" tak opět přijde havárie.
Taková kravina s vkládáním listů a člověk nad tím stráví věčnost.

Nemáš tucha jestli by se dala ošetřit i tato situace nebo už toho chci moc?
Díky za Tvůj čas strávený nad takovou ptákovinou.citovat
#005118
avatar
Možní by stálo za to po otestování, jestli list existuje zvolit dotaz, jestli chce uživatel existující vymazat Třeba ten List2. Při Ano zkus :

On Error Resume Next
Application.DisplayAlerts = False
Sheets("x").Delete
On Error GoTo 0citovat
#005127
avatar
vov, tak tu som skoncil - pri tom list2 Ti neviem poradit 3 , ale kto by uz zadaval tak blby nazov listu ? 2citovat
#005129
Stalker
Tak se mi po dlouhém boji podařilo dosáhnout kýženého výsledku. Sice to nejí nejelegantnější ani nejlepší řešení, ale hlavní je, že funguje 2

Private Sub CommandButton1_Click() 'vloží nový list
Application.ScreenUpdating = False
x = Application.InputBox("Zadejte jméno nového listu", "Vložení nového listu")
If x = vbNullString Or x = False Then
Exit Sub
End If

On Error GoTo chyba2
Sheets.Add after:=Worksheets(1)
ActiveSheet.Name = x
Sheets("index").Select
Sheets(x).Select
Exit Sub

chyba2:
Application.DisplayAlerts = False
MsgBox "List s požadovaným názvem již existuje !!", vbExclamation, "Duplicita názvu listu"
ActiveSheet.Delete
Sheets("index").Select
Application.DisplayAlerts = True

Application.ScreenUpdating = True

End Sub


Tímto bych chtěl poděkovat všem zůčastněným za jejich rady a náměty.citovat
#005130
avatar
Vidis , jednoduche a funkcne a o to ide 7citovat
#005138
avatar
Takové prostější řešení:
Sub sheet() 'vloží nový list
Dim x As String
x = Application.InputBox("Zadejte jméno nového listu", "Vložení nového listu")
Err = 0
On Error Resume Next
Sheets(x).Select
If Err = 0 Then
MsgBox "List s požadovaným názvem již existuje !!", vbExclamation, "Duplicita názvu listu"
Else
Sheets.Add(, Worksheets(1)).Name = x
End If
End Sub
citovat

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje