Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  147 148 149 150 151 152 153 154 155   další » ... 302

No a kde je tá Vaša faktúra, aby sme videli čo to robí za šarapatu, kde je aký zdroj umiestnený, ako sa mení, náväznosti polohy zdroja od zmeny čísla fak. a pod. ?

Alebo nahraďte toto
ThisWorkbook.Worksheets(1).Copy
ActiveWorkbook.SaveAs Filename:="D:\Data_" & Format(Now, "dd.mm.yyyy hh-mm-ss") & ".csv", FileFormat:=xlCSV, Local:=True
ActiveWorkbook.Close (False)

týmto
i = FreeFile
Open "D:\Data_" & Format(Now, "dd.mm.yyyy hh-mm-ss") & ".csv" For Output As #i
Print #i, Join(Pole, vbCrLf)
Close #i

a bude to rýchlejšie.

No a čo vstupný zostatok z minulého obdobia/predošlej karty ?

PS: Bez urážky, ak tápete nad SUM(), čo potom asi robíte s tým "šifrovacím" algoritmom v makre ?

Prípadne ešte zmeniť SUMIFS na SUMIF, teda prvú položku poľa Array() zmeniť
z
"=SUMIFS(DATA!$B$2:$B$" & PoslRadekD & ",DATA!$A$2:$A$" & PoslRadekD & ",$B5)"
na
"=SUMIF(DATA!$A$2:$A$" & PoslRadekD & ",$B5,DATA!$B$2:$B$" & PoslRadekD & ")"
Teda celý riadok bude:
.Formula = Array("=SUMIF(DATA!$A$2:$A$" & PoslRadekD & ",$B5,DATA!$B$2:$B$" & PoslRadekD & ")", "=VLOOKUP($B5,DATA!$A$2:$B$" & PoslRadekD & ",2,FALSE)", "=COUNTIF(DATA!$A$2:$A$" & PoslRadekD & ",$B5)")

Skúste toto:
Sub MALED()
Dim PoslRadekV As Long, PoslRadekD As Long

PoslRadekD = wsData.Cells(Rows.Count, 1).End(xlUp).Row
If PoslRadekD < 2 Then MsgBox "Žádná data v liste DATA.", vbExclamation, "Chyba": Exit Sub
With wsVypocet
PoslRadekV = .Cells(Rows.Count, 2).End(xlUp).Row
If PoslRadekV < 5 Then MsgBox "Žádná data v liste VÝPOČET.", vbExclamation, "Chyba": Exit Sub

Application.ScreenUpdating = False
With .Cells(5, 3).Resize(PoslRadekV - 4, 3)
.Formula = Array("=SUMIFS(DATA!$B$2:$B$" & PoslRadekD & ",DATA!$A$2:$A$" & PoslRadekD & ",$B5)", "=VLOOKUP($B5,DATA!$A$2:$B$" & PoslRadekD & ",2,FALSE)", "=COUNTIF(DATA!$A$2:$A$" & PoslRadekD & ",$B5)")
.Value = .Value
End With
Application.ScreenUpdating = True
End With
End Sub

Príklad

Mne by to dávalo zmysel približne takto:
-Ak dosiahne hodnota skladu minimálnu hodnotu 5 - upozornenie na dosiahnutie minimálneho stavu.
-Ak je stav medzi 1-4 (vrátane) - upozornenie na dochádzanie produktu.
-Ak je stav 0 - upozornenie na chýbajúci produkt (tu nechápem použitie makra s názvom "Aktuálne", žeby v zmysle "Je aktuálne priobjednať ďalšie kusy" ??? To sa má robiť pri dochádzaní, nie ?).
- Treba zobrazovať všetky druhy správ, lebo pri viacnásobnej zmene (viac buniek naraz), môže dôjsť k rôznym stavom.
-Treba myslieť nielen na rôzne stavy, ale aj na výpis konkrétnych produktov v konkrétnych stavoch.
-Táto komplexná správa musí vynechať prípadné nepoužité stavy.
-Táto komplexná správa musí mať ikonu najvyššej použitej priority. Preto som pridal, logicky, informačnú ikonu pri dosiahnutí minimálneho stavu 5.

Všetko uvedené obsahuje toto riešenie. Dá sa to vylepšiť, napr. tým, že sa použijú kolekcie, a vylúčia sa duplicitné položky.

Ale. O koľko sa má jednať riadkov ? Je tento počet riadkov stále rovnaký ? Ak nie, čo určuje posledný riadok ? Takéto "upozornenie" by sa dalo asi riešiť (ak položiek nebude 100 000) aj vzorcami tak, že by maticové vzorce, vypisovali vedľa všetky položky, na ktoré treba upozorniť + Podmienené formátovanie. A bolo by to bez makra.

Treba ďalšie info ...

Vyskúšajte či som obsiahol všetky možnosti...

A kde je potom koniec pracovnej doby ? Priložte reálnu prílohu s reálnym rozmiestnením a reálne vyplnenými hodnotami, v ktorých budú zastúpené všetky možnosti, ktoré môžu nastať.

Úprava vzorcov aj makra. Skúste nájsť rozdiel v makre tých dvoch hárkov. Tam bola chyba.
Application.EnableEvents - použite iba ak potrebujete (v popise)

Tak to bude musieť byť asi len makro. Pr.

XLS je starý typ a môže obsahovať makrá, naproti tomu xlsx je novší typ bez možnosti obsahu makier. Na súbor s obsahom makier je xlsm.

Tak malú šírku to považuje za 0.
Dim DisableEvents As Boolean
Const SIRKA_MALA = 0.01
Const SIRKA_VELKA = 10

Private Sub ckbSloupec2_Click()
ZmenaSirky ckbSloupec2
End Sub

Private Sub ckbSloupec3_Click()
ZmenaSirky ckbSloupec3
End Sub

Private Sub ckbSloupec4_Click()
ZmenaSirky ckbSloupec4
End Sub

Private Sub UserForm_Initialize()
DisableEvents = True
ckbSloupec2.Value = List1.Columns(2).ColumnWidth <= SIRKA_MALA
ckbSloupec3.Value = List1.Columns(3).ColumnWidth <= SIRKA_MALA
ckbSloupec4.Value = List1.Columns(4).ColumnWidth <= SIRKA_MALA
DisableEvents = False
End Sub

Sub ZmenaSirky(ckb As MSForms.CheckBox)
If DisableEvents Then Exit Sub
Select Case ckb.Value
Case True: List1.Columns(CByte(ckb.Tag)).ColumnWidth = SIRKA_MALA
Case False: List1.Columns(CByte(ckb.Tag)).ColumnWidth = SIRKA_VELKA
End Select
End Sub

Metóda SpecialCells je v prílohe tiež :)

Také ružové to nieje. A navyše sa nemá hľadať posledný riadok, ale prvá prázdna bunka. Čo je niečo úplne iné. Lenže k nájdeniu správneho riešenia je treba správne zadanie. A to tu absentuje. Kde je ukážková príloha ?

Posielam zopár modelových situácií aj s riešeniami, a upozornením na niektoré možné problémy.

Prípadne sa dá použiť ešte aj Cells(y,x).Find(...)


Strana:  1 ... « předchozí  147 148 149 150 151 152 153 154 155   další » ... 302

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