Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  18 19 20 21 22 23 24 25 26   další » ... 286

Váš dotaz je značne nejasný. Skúste priložiť oba súbory, a nich demonštrovať čo chcete urobiť, aby to v treťom súbore fungovalo. (na prikladanie príloh sa musíte zaregistrovať)

Ak premenujete súbor2 na súbor3, a iný súbor1 sa odkazoval na súbor2, tak to hodí chybu, lebo ten súbor1 nevie, že Vy ste premenoval súbor2 na súbor3. Alebo ak súbor2 presuniete.

Proste to lepšie popíšte. Každopádne medzisúborové linky sa nedajú urobiť dynamicky z textu, ako linky v tom istom súbore cez INDIRECT/NEPŘÍMÝ.ODKAZ.

@spoko33: Ale Vy predsa musíte aktualizovať ten zdroj. Tak prečo nie aj napr. KT alebo PQ??? Veď je to pri jednom stlačení tlačidla Aktualizovať všetko. Aj tak ho musíte stlačiť.

A nestačí Vám iba rýchly filter (Smart Filter, alebo inak povedané Slicer) v tej istej Tabuľke? Potrebujete to na iný list?

Dáta idú z nejakého súboru na Vašom disku? Môžete ho poskytnúť?
Dáta idú z nejakého linku na webe? Je verejný? Link.
Dáta idú z Vášho serveru/cloudu? Druh (OneDrive, zdieľaná zložka...)?

Návrh od lubo sa mi zdá pre Vás schodný. Konvert na Tabuľku a PQ + Slicer.

Áno, no, je to mätúce, keď SK Excel má EN funkcie, a CZ Excel má CZ funkcie. Človeka to často ani nenapadne. Nebojte, nie ste sám. Aj iné jazyky majú svoje mutácie názvov funkcií. A celý bordel je násobený rôznymi oddeľovačmi parametrov. Čiže SK Excel má síce EN názvy, ale parametre sú oddelené ";" a nie "," ako v EN, lebo tá je rezervovaná pre desatiny. V EN je zase desatinná "." a "," je oddeľovač tisícov. Oddeľovače asi inak ani riešiť nejde, kvôli národným zápisom, ale názvy funkcií mohli nechať radšej všade EN. Neboli by také problémy. Aj keď si samouk nájde nejaký megavzorček na nete a čuduje sa prečo nefičí...
Pekný deň.

Ale no tak. Veď Vy tam máte dávať predsa vždy ten CZ ekvivalent, a nie SK 1
Udávam vždy obe varianty.

Nezadal ste vzorec ako maticový. Teda nie Enter, ale Ctrl+Shift+Enter.
V prípade objektu Tabuľka je potreba ešte zmeniť rozsahy
=IFERROR(INDEX(DataDopln[text];MATCH("*";IFERROR(""&MATCH(DataDopln[cislo];[@[Číslo účtu ]];0);FALSE);0));"")
=IFERROR(INDEX(DataDopln[text];POZVYHLEDAT("*";IFERROR(""&POZVYHLEDAT(DataDopln[cislo];[@[Číslo účtu ]];0);NEPRAVDA);0));"")

prípadne môžeme zmeniť vzorec aj na
=IFERROR(INDEX(DataDopln[text];MATCH(1;COUNTIF([@[Číslo účtu ]];DataDopln[cislo]);0));"")
=IFERROR(INDEX(DataDopln[text];POZVYHLEDAT(1;COUNTIF([@[Číslo účtu ]];DataDopln[cislo]);0));"")

Inak tú funkciu FILTER má Office 2021 a 365. Tiež mám v pláne už update ...

@lubo: fnc FILTER nemám, teda neoverím, ale SEARCH/HLEDAT nájde 511* aj v 051100, čo je nesprávne.
Dalo by sa to ošetriť pridaním nejakého znaku do reťazcov:
...SEARCH(" "&DataDopln[cislo];" "&[@[Číslo účtu ]])...
...HLEDAT(" "&DataDopln[cislo];" "&[@[Číslo účtu ]])...

Pokúsil som sa pochopiť tie Vaše výpočty, názvy premenných a čo by mohli znamenať (aj vzhľadom na popis v Application.InputBox) ale nedarí sa mi to rozlúštiť.
Napr. čo je ZbytekNaKotouci s popisom "zadej zbytkové množství v balíku 0, 60, 70" ???
To máte napr. nejaký štítkovač, a sem zadávate neminuté štítky v "balíku", aby sa najskôr minuli tie? Až potom sa budú míňať ďalšie balíky štítkov? Ako sa potom číslujú tie listy ak bude ZbytekNaKotouci=100?
1. list "1" - "1/5" - "100"
2. list "2" - "2/5" - "1000"
3. list "3" - "3/5" - "1000"
4. list "4" - "4/5" - "1000"
5. list "5" - "5/5" - "500"
???
Lenže nedáva zmysel, aby ten posledný list bol prvým listom v PDF.

Načo potom slúži premenná "pocetstran" ?

Majú tieto nastavenie premenných cez Application.InputBox nejaký súvis s tým listom "dodací list"?

Začal som to prerábať z mnohých InputBoxov na jeden UserForm, kde sa zadajú dáta naraz - oveľa viac User-Friendly. Len mi to dovysvetlite.

Ak ste priložil nejaký súbor, tak neprešiel. Buď je to xlsm a treba ho za-ZIP-ovať, alebo je veľký a treba ho zmenšiť tak cca do 300 kB.

O akú verziu Office sa jedná?

Ktorú verziu riešenia máte na mysli? Ak tú od "lubo", potrebujete Office 2021 alebo 365.

Odkaz na iný list (apostrofy nie sú potrebné ak názov neobsahuje medzeru)
'názov listu'!A1:B1

V prípade prevedenia oblasti na Tabuľku (nazývané ako Tabuľka s veľkým "T", alebo ListObject alebo Excel Table) cez Ctrl+T, sa na žiadny list neodkazujete. Ale iba na názov Tabuľky prípadne na jej stĺpce
tblUdaje
tblUdaje[[cislo1]:[cislo2]]
...

Iná možnosť by bol maticový vzorec, kde netreba testovať najskôr "04", no zápis by musel byť korektný (počet znakov "?" Vám nesedí, máte v 3 číselnej maske 4 otázniky, čo je 7 znakov). Tak radšej takto:
04*
511*
518*


=IFERROR(INDEX(dopln!$B$2:$B$4;MATCH("*";IFERROR(""&MATCH(dopln!$A$2:$A$4;List2!A2;0);FALSE);0));"")
=IFERROR(INDEX(dopln!$B$2:$B$4;POZVYHLEDAT("*";IFERROR(""&POZVYHLEDAT(dopln!$A$2:$A$4;List2!A2;0);NEPRAVDA);0));"")


Dajú sa použiť rôzne kombinácie COUNTIF, INDEX, SMALL, MATCH, VLOOKUP...

@lubo: už som na tú 2021 zlomený, len musím ešte počkať 5

??? Celý ten kód je divný. Od prepočtu tých listov na kotúče, zvyšku a pod., až po 2x po sebe určovanie menného zoznamu listov a pod. Včetne toho, že Váš príklad urobí listy
1. list "1" - "2/4" - "1000"
2. list "2" - "3/4" - "1000"
3. list "3" - "4/4" - "600"
4. list "4" - "1/4" - "1000"
PDF to vytvorí s 8 stránkami (každý list na 2 str). Ak pochopím, čo to tam ako rátate (pre mňa neskutočne nepochopiteľný zápis v kóde), tak bude stačiť pri vytváraní iba zmeniť poradie listov.

EDIT:
To nebude celý kód, všakže? Vzhľadom na nepoužité globálne premenné ako napr. "varinput".

Toto myslíte ako fakt vážne?
...Filename:=xlQualityStandard...
to je kvalita PDF a nie názov súboru

List1 - musíte nakopírovať vzorce na dostatočne veľkú oblasť
List2 - obabrete to automatickým rozširovaním cez objekt Tabuľka

Ak teda už fakt neviete čo s tou likviditou, a prehadzujete tie prebytky hospodárenia doma vidlami, tak pošlite za kalíšok pre fórum 5
Pekný deň.

Pridať kontrolu čísla je prkotina. Najdlhšie na celom kóde je skladanie Msg oznamu :)
Sub Nova_KJ()

Dim kj As String, NoZnak As String, No2Znak As String, Z As String * 1, MSG As String
Dim i As Long, bNumOK As Boolean
Dim LO As ListObject

Const VALID As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 'validní znaky celkově
Const VALID2ZNAK As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'validní znaky 2. znaku

Set LO = wsKJ.ListObjects("DataKj") 'název Tabulky na listě kj

Do
On Error Resume Next 'pokud uživatel stiskne klávesu ESC nebo Cancel nebo křížek nebo zadá "", kód skočí do řádku s "Exit Sub"
kj = UCase(InputBox("Zadejte novou RZ:" & vbNewLine & "(7 znaků, bez mezer a speciálních znaků) - ukončit můžete klávesou ESC nebo kliknutím na křížek nebo na klávesu Cancel", Default:=kj))

If Err.Number <> 0 Or kj = "" Then Exit Sub 'pokud uživatel stiskne klávesu ESC nebo Cancel nebo křížek nebo zadá "", ukončí se makro
On Error GoTo 0 'vynulování chybového čísla

If Len(kj) < 7 Or Len(kj) > 8 Then
MsgBox "Opravte RZ - (nesprávný počet znaků {" & Len(kj) & "}, vyžadováno 7-8 znaků)", vbExclamation
Else
NoZnak = "" 'nepovolené znaky
No2Znak = "" 'nesplněna podmínka 2. znak = písmeno
bNumOK = False 'příznak, zda text obsahuje číslo

For i = 1 To Len(kj) 'prověření znaků
Z = Mid$(kj, i, 1)
bNumOK = bNumOK Or IsNumeric(Z) 'někde je číslo
If i = 2 Then 'ověření, zda je 2. znak písmeno
If InStr(1, VALID2ZNAK, Z) = 0 Then No2Znak = vbNewLine & "Znak č. 2 {" & IIf(Z = " ", "mezera", Z) & "} musí být písmeno A-Z"
End If
If InStr(1, VALID, Z) = 0 Then NoZnak = NoZnak & vbNewLine & vbTab & IIf(Z = " ", "mezera", Z)
Next i

MSG = NoZnak & No2Znak 'složení správy o chybě
MSG = IIf(MSG = "", "", vbNewLine & vbNewLine & "Nepovolené znaky :" & MSG)
If Not bNumOK Then MSG = MSG & vbNewLine & vbNewLine & "Chybí aspoň 1 číslo"

If MSG <> "" Then
MsgBox "Opravte RZ - (bez mezer a speciálních znaků)" & MSG, vbExclamation
Else
Exit Do 'opakování končí validním zadáním
End If
End If
Loop

wsKJ.Cells(LO.Range.Columns(1).Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1, "A").Value2 = kj 'přidání kj na konec Tabulky DataKj
LO.Range.RemoveDuplicates Columns:=1, Header:=xlYes 'smazání duplicitních kj
LO.Range.Columns(1).Sort key1:=LO.Range.Columns(1), order1:=xlAscending, Header:=xlYes 'seřazení kj

MsgBox "HOTOVO - nová RZ uložena", vbInformation
End Sub

Ak som to pochopil tak napr.
Sub Nova_KJ()

Dim kj As String, NoZnak As String, No2Znak As String, Z As String * 1
Dim i As Long
Dim LO As ListObject

Const VALID As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 'validní znaky celkově
Const VALID2ZNAK As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'validní znaky 2. znaku

Set LO = wsKJ.ListObjects("DataKj") 'název Tabulky na listě kj

Do
On Error Resume Next 'pokud uživatel stiskne klávesu ESC nebo Cancel nebo křížek nebo zadá "", kód skočí do řádku s "Exit Sub"
kj = UCase(InputBox("Zadejte novou RZ:" & vbNewLine & "(7 znaků, bez mezer a speciálních znaků) - ukončit můžete klávesou ESC nebo kliknutím na křížek nebo na klávesu Cancel", Default:=kj))

If Err.Number <> 0 Or kj = "" Then Exit Sub 'pokud uživatel stiskne klávesu ESC nebo Cancel nebo křížek nebo zadá "", ukončí se makro
On Error GoTo 0 'vynulování chybového čísla

If Len(kj) < 7 Or Len(kj) > 8 Then
MsgBox "Opravte RZ - (nesprávný počet znaků {" & Len(kj) & "}, vyžadováno 7-8 znaků)", vbExclamation
Else
NoZnak = "" 'nepovolené znaky
No2Znak = "" 'nesplněna podmínka 2. znak = písmeno
For i = 1 To Len(kj) 'prověření znaků
Z = Mid$(kj, i, 1)
If i = 2 Then 'ověření, zda je 2. znak písmeno
If InStr(1, VALID2ZNAK, Z) = 0 Then No2Znak = vbNewLine & "Znak č. 2 {" & IIf(Z = " ", "mezera", Z) & "} musí být písmeno A-Z"
End If
If InStr(1, VALID, Z) = 0 Then NoZnak = NoZnak & vbNewLine & IIf(Z = " ", "mezera", Z)
Next i

If NoZnak & No2Znak <> "" Then
MsgBox "Opravte RZ - (bez mezer a speciálních znaků)" & vbNewLine & "Nepovolené znaky :" & NoZnak & No2Znak, vbExclamation
Else
Exit Do 'opakování končí validním zadáním
End If
End If
Loop

wsKJ.Cells(LO.Range.Columns(1).Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1, "A").Value2 = kj 'přidání kj na konec Tabulky DataKj
LO.Range.RemoveDuplicates Columns:=1, Header:=xlYes 'smazání duplicitních kj
LO.Range.Columns(1).Sort key1:=LO.Range.Columns(1), order1:=xlAscending, Header:=xlYes 'seřazení kj

MsgBox "HOTOVO - nová RZ uložena", vbInformation
End Sub

Ale máte tam aj iné dĺžky kj (3, 9, 6, aj s nepovolenými znakmi {medzera, pomlčka} ...)

Ja som objekt toho Vášho listu "kj" vo VBA premenoval z List5 na wsKJ. To je tzv CodeName listu (nezávislé od popisu na ušku listu). V prílohe to je vidieť. Je to namiesto
Set ws = ThisWorkbook.Sheets("kj")
alebo namiesto nič nehovoriaceho List5.

Do deklarácií pridajte
Dim S() As String, i As Integer
A potom toto
Stlp = wsOdstranovanie.Range("B1").Value
Stlp = Stlp & ":" & Stlp

nahraďte týmto
S = Split(wsOdstranovanie.Range("B1").Value, ",")
For i = 0 To UBound(S)
S(i) = S(i) & IIf(InStr(1, S(i), ":") > 0, "", ":" & S(i))
Next i
Stlp = Join(S, ",")

a ešte pred
Set appExcel = New Excel.Application
pridajte
Stlp = Replace(rng.Address(0, 0), ",", ";")
Zaujímavé je, že v obslužnom Exceli sa oblasti stĺpcov v Range odkazujú pomocou čiarky A:A,C:C,FM:FN no v skrytej druhej inštancii Excelu sa odkazujú pomocou bodkočiarky A:A;C:C;FM:FN. Inak to vedie k chybe. Každopádne Vy po úprave zadávate nasledovný formát do bunky B1
Napr.:
A
A,C
A,C,FN
A,C,FM:FN
A:A,C:C,FM:FN
A:B,G,FM:FO
...

a obdobné kombá 1


Strana:  1 ... « předchozí  18 19 20 21 22 23 24 25 26   další » ... 286

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

Vynásobit hodnoty kurzem - Power Query

Alfan • 26.4. 7:56

Relativní cesta - zdroje Power Query

Alfan • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

elninoslov • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

lubo • 25.4. 19:18

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21