< 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

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

Čas od do

lubo • 18.4. 11:13

Čas od do

jarek1111 • 18.4. 8:32

Čas od do

jarek1111 • 18.4. 8:31

Makro smyčka

MilanKop • 18.4. 7:18

Makro smyčka

elninoslov • 18.4. 0:18

Makro smyčka

MilanKop • 17.4. 21:33

Automatické generování souborů

Majki • 17.4. 13:48