< návrat zpět

MS Excel


Téma: odstranění listu makrem rss

Zaslal/a 1.8.2016 23:38

ahoj, už se několik hodin trápím s touto drobností a ne a ne na to přijít..
Mám VBA formulář, který data přenáší na jeden list (takový větší souhrn dat z formuláře). Jedno pole ve formuláři (ID) se tedy uloží do souhrnu třeba do bunky A1 a s hodnotou "123" formulář zároveň vytvoří automaticky list s názvem "123". Do této doby je vše OK, ale když chci smazat právě list "123" tak se mi to nedaří. Formulář také obsahuje combobox, který zobrazuje hodnoty všech ID. Když vyberu právě hodnotu 123, a tlačítkem spustím jednoduché makro, tak mi vyskočí error s chybou 9, nemá někdo ponětí, jak to vyřešit? jde o lehký případ, ale nefunguje mi :/

Private Sub TlacitkoVymazatID_click()
Sheets(VymazatID).Delete 'do VymazatID se vybere hodnota z comboboxu=123
end sub

poradí mi někdo prosím

Zaslat odpověď >

#032191
avatar
Run-time error 9 = Subscript out of range.
Tudíž je nejspíš problém s názvem listu. Zkontroluj si přiřazení jména listu do proměnné (ComboBox1.Value, pokud tam nemáš "Value", tak zkus přidat). Případně ještě před mazáním listu zkus požadovaný list vybrat "Sheets(VymazatID).Select".
P.citovat
#032193
avatar
Děkuji, VALUE funguje, tolika promrhaných hodin, kvůli takové kravince :D.. nojo, pro příště budu vědět 1citovat
#032205
avatar
mohl bych Vás ještě požádat o opravu tohoto kódu?

Private Sub Tlacitko_click()
Sheets(ID.Value).Activate
PrazdnyRadek = Range("A4:A10").End(xlUp).Row
If (PrazdnyRadek + 1) <= 10 Then
MsgBox "OK " & PrazdnyRadek'pokud bude funkční zbytek kodu si dopíši
Else
MsgBox "Dosažen limit"
End If

Jde mi jen o to, aby kód fungoval v oblasti A4:A10, nějaký čísla mi to sice hází, ale trochu nesmyslná, mám tedy oblast v excelu A4:A10, kam je možné zapisovat zmíněné ID, v bunce A11 už jsou další data a nelze do nich zapisovat, bohužel mi nějak asi nefunguje nalezení prázdného řádku nebo posledního vyplněného řádku v této oblasi, asi se to vztahuje na celý sloupec.citovat
#032206
avatar
Vyhledání prázdného (resp. obsazeného) řádku se zapisuje trochu jinak, takto pro oblast nefunguje. Dalo by se zapsat takto:
Posledni_obsazeny_radek = Range("A11").End(xlUp).RowPřípadně si pomoci funkcí COUNTBLANK, a zjistit počet prázdných buněk v oblasti:
Pocet_volnych_bunek = Application.WorksheetFunction.CountBlank(Range("A4:A10"))P.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