Na testování "prázdnosti" lze použít funkci IsEmpty(nazevPrvku) - vrací TRUE nebo FALSE
Udelat tohle vzorcem je dost slozity, tak jsem to zkusil makrem...
Asi nebudu moc bystrej, ale tohle moc nechapu.
Jde o to odstranit z jednoho sloupce duplicity?
Podle prikladu toto: "632003Poštovéslužbyatelekomunikačnéslužby 2"?
asi takto
chapu - zkuste prilozit posledni verzi vaseho souboru, pridelam vam to tam...
Myslim, ze postaci, kdyz do textboxu nactete posledni cislo +1 (jen pozor na situaci, kdy se zadava prvni zaznam).
posledni cislo je: cells(Application.WorksheetFunction.CountA(Range("A:A")),1)
Taky chci upozornit, ze tento sloupec udava pocet zaznamu, takze musite doplnit poradove cislo az po doplneni ostatnich dat v radku (pokud byste doplnil nejdrive poradove cislo, ostatni hodnot by byly o radek nize).
Funkce CountA, kterou pouzivate pro stanoveni prazdne bunky umi pouze spocitat, kolik zaznamu je v zadane oblasti.
Pokud mate tedy sloupec, kde se bude ve dvou radcihch (v prvnim a druhem) nachazet zahlavi, pak lze pouzit v tomto tvaru
NextRow = Application.WorksheetFunction.CountA(Range("A:A")) + 1,
kde +1 uda dalsi radek od posledniho zaplneneho, ale POZOR, nesmite mit zadnou prazdnou bunku ve sloupci A pred zahlavim...
chtelo by to videt ten soubor...takhle nasucho me nic nenapada
Zkus tuhle funkci misto obou uvedenych:
Public Function zakonnaLhuta(cislo) As String
zakonnaLhuta = Application.WorksheetFunction.SumIf(Worksheets(cislo).Range("a24:a29"), Range("I2"), Worksheets(cislo).Range("e24:e29"))
End Function
Nevyhoda toho ale je, ze pokud listy pojmenujes cisly, tak se neodkazujes za list se jmenem napr. '1', ale na prvni list v sesitu, tzn. ze by bylo lepsi pojmenovat listy napr. 'a', 'b' atd...
Zdravim,
pokud to spravne chapu, potrebujete jen pomoci nejakeho cisla v bunce zmenit odkaz na list.
V tomto pripade je idealni vestavena funkce NEPŘÍMÝ.ODKAZ, takze neni nutne ani psat vlastni funkci.
Napovedu urcite najdete nekde na webu :)
opraveno...
Opravil jsem vzorce u prehledu za jednotlive tydny a zaky...
Panel s jednim tlacitkem vytvoris snadno (dalsi talcitka jsou taky snadne) - pokud ti staci ty tlacitka s popisem, bude to takhle:
Nasledujici procedura by mela byt spoustena pri otevreni, tedy Private Sub Workbook_Open()
Sub Vytvor_panel()
CommandBars.Add "Panel"
CommandBars("Panel").Controls.Add msoControlButton
With CommandBars("Panel").Controls(1)
.Style = msoButtonCaption
.Caption = "Popisek tlačítka"
.OnAction = "objemy" 'toto je nazev makra, ktery tlacitko spousti
.BeginGroup = True
End With
With CommandBars("panel")
.Visible = True
.Position = msoBarLeft
End With
End Sub
a tento kod panel zrusi (idealne pri zavreni sesitu: Private Sub Workbook_BeforeClose(Cancel As Boolean))
Sub Smaz_panel()
CommandBars("Panel").Delete
End Sub
Funkce vraci vypocet sama o sobe.
Pro Vas ucel bych tedy pouzil nasledujici makro
Sub objemy()
Dim objem_krychle As Double, A As Double
A = InputBox("Zadejte stranu A:", "objem krychle")
objem_krychle = A ^ 3
zprava = msgbox("objem krychle je " & objem_krychle, vbOKCancel, "Objem krychle")
Select Case zprava
Case vbOK
Range("a1") = objem_krychle
Case vbCancel
Exit Sub
End Select
End Sub
Ja ten soubor otevrel, ale moc nechapu, ceho vlasnte chcete dosahnout?
Mate vlastni funkci, ktera spocita objem, to je OK; proč ale potom jeste chcete makro, ktere udela to same?
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.