< návrat zpět

MS Excel


Téma: Soucty hodnot z listboxu rss

Zaslal/a 16.6.2016 23:08

Ahoj magove,
prosím Vás o radu, mam formular (viz priloha) do ktereho uzivatel zadava nekolik udaju.
Mimo jine ma pozadavek, aby v hornich listboxech (titulek odpracovane hodiny) byl soucet hodiny (odpracovanych) zadavanych v jednotlivych radcich (zakazkach).
Zada jmeno XY, odpracovane hodiny 01, nahore chce videt soucet hodin. u jmena. je to pochopitelne? Pokud ne, upresnim

Příloha: zip31786_14_06_17_30.zip (203kB, staženo 19x)
Zaslat odpověď >

#031787
elninoslov
Štúdium 4K riadkov nepopísaného duplicitného kódu je minimálne za 1-5 natvrdo. V blázninci. :)
Pozerám v rýchlosti na ten formulár ... ktorý z tých 4 "listboxov" (asi myslíte tých textboxov) máte na mysli ? Tri by mohli byť asi zváranie/brúsenie/práca a čo ten 4. skrytý ? Sú neotitulkované. Ten list "data_prace" je "celková databáza" alebo iba "prepis aktuálneho formu" ? Ak iba prepis, použite Application.WorksheetFunction.SumIf. Ak je to celková DB tak cyklus v ktorom prejdete Me.Controls a nájdete všetky Visible objekty s daným názvom a spustíte ho klikom na "Ďalší", alebo si ukladajte hodnoty z aktuálneho formu do zvláštneho listu a použite 1. navrhovanú metódu.

Ten kód by sa mal ale zredukovať, lebo takto je veeeľmi neprehľadný a ťažko upraviteľný. Možno by stálo za zváženie radšej vytvárať objekty dynamicky podľa potreby a volať jednu metódu pre všetky (s parametrom názvu či typu a čísla) objekty v riadkoch rovnakého zamerania.

Trochu viac to popíšte, možno sa niekto chytí, mne sa popravde už nechce. :(

EDIT: Ešte ma napadla triviálnosť. Veď stačí pri prechode na ďalší riadok pripočítať hodnotu k celkovej. Nie som pri PC a nevie názvy textboxov, ale priklad:
tbCelkomZvar.Text = CStr(Val(tbCelkomZvar.Text) + Val(tbZvar1.Text))citovat
#031789
avatar
Moc diky za reakci.
Je pravda, ze jsem ve tvorbe v cemkoliv vba totalni amater. Ucim se za pochodu.
Zkusim pouzit vase navrhy.
Scitat mam casy zadane v listboxu "hod prace".
Data prace, je v soucasnosti pouze list, kam se prepisuji informace z jednotlivych radku formulare.
Jak mohu vytvorit objekty dynamicky?
Dekuji za jakoukoliv radu.citovat
#031791
avatar
Bez zjednodušení to nepůjde.

Zkuste použít aspoň procedury:

např. v Layout se pořád opakuje
If DataPrace.Zakazka01.Enabled = True And DataPrace.TbLinka01.Value = "" Then DataPrace.TbLinka01.Value = "WH RH"
If DataPrace.Zakazka02.Enabled = True And DataPrace.TbLinka02.Value = "" Then DataPrace.TbLinka02.Value = "WH RH"
...


Udělejte z toho proceduru, kde parametrem je potřebný text, celý kód bude čitelnější.

V DataPrace se pořád opakují stejné operace, zkuste procedury


sub Udelej(TbLinka as object, TbHodPrace as object, ...)
TbLinka.Value =c
TbLinka.Height = 50
...

end sub

pak v kódu

Udelej TbLinka02, TbHodPrace02,



Jednotlivé prvky můžete vložit do pole

Na začátku


Dim Zakazka(1 to 18) as object

Private Sub UserForm_Initialize()
set Zakazka(1)=Zakazka01
set Zakazka(2)=Zakazka02
set Zakazka(3)=Zakazka03
...

End Sub

for i =10 to ubound(Zakazka)
Zakazka(i).visible= true
next
citovat
#031792
avatar
Diky, hned to zkusím. Přiznám se, ze to nebude jednoduché, ale jinak se to nenaucim.
Dám vědět jak jsem pochodil.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