Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  164 165 166 167 168 169 170 171 172   další » ... 302

Mohli ste kľudne pokračovať vo svojom vlákne z 2.2.2018 s rovnakou témou. A možno s tým budú stále rovnaké nelogické problémy, ktoré som tam spomínal :)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Poz As Long

If Not Intersect(Cells(1, 2), Target) Is Nothing Then
On Error Resume Next
Poz = WorksheetFunction.Match(Cells(1, 2), Cells(18, 11).Resize(, 11), 0)
On Error GoTo 0

Application.EnableEvents = False
If Poz > 0 Then
Cells(3, 1) = Cells(17, 10 + Poz)
Cells(17, 10 + Poz).Resize(2) = WorksheetFunction.Transpose(Array(0, "Prázdný"))
Else
Cells(3, 1).ClearContents
End If
Application.EnableEvents = True
End If
End Sub

Ale zase je tu množstvo poznámok. V tej tabuľke sa majú nájsť, spočítať a vymazať všetky výskyty daného dielu (To treba urobiť potom inak)? Alebo iba prvý/posledný? Z ktorej strany? Ak tam nenájde daný diel alebo je B1="", vymaže modrú bunku A3.

Táto príloha potom samozrejme prináša ďalšie a ďalšie otázky s ohľadom na predchádzajúce nedovysvetlené zadanie. Napr. : Hľadáte Vy v predchádzajúcom požiadavku naozaj prvý prípad zprava, keď je splnené že do nejakej bunky sú všetky zaplnené a len tá posledná bunka je prázdna? Alebo hľadáte prvú prázdnu zľava?
Ak tam totiž sú medzery ("prázdne" boxy), tak aj v prvom prípade nastane, že sa naplní box zprava. Mne to príde divné, ale to možno len preto, lebo neposkytujete dobrý (žiadny) popis toho, čo chcete dosiahnuť. Toho čo robíte. Z Vašeho makra nemusí byť vôbec zrejmé čo chcete dosiahnuť, keďže ako laik nemusíte mať uváženú správnu metodiku.

Keď tak pozerám čo robí ten Váš kód resetboxu, tak resetboxu2 robí to isté, nič viac netreba, žiadne ďalšie procedúry ako reseticek1, reseticek2 ... .
Teda robí to to isté, ale vôbec neviem čo 5
Nech je to ale čo chce, tak asi by som si urobil ďalší pokus aj cez polia a pomeril rýchlosť. Záleží aj na množstve buniek, ktoré chcete nakoniec obsiahnuť...
Sub resetboxu2()
Dim i As Long
If Cells(3, 1) <> "" Then
For i = 9 To 1 Step -1
If Cells(21, 1).Offset(0, i) = "" And WorksheetFunction.CountIf(Cells(21, 2).Resize(, i), "<>") = i - 1 Then
Cells(21, 2).Resize(3).Offset(0, i - 1) = WorksheetFunction.Transpose(Array(Cells(1, 1), Cells(5, 1), Cells(3, 1)))
Cells(3, 1) = 0
End If
Next i
End If
End Sub

Skúste priložiť normálnu XLSM prílohu, kde bude lepšie vidieť, čo chcete dosiahnuť (čo testujete a čo dopĺňate), a kde budú aj procedúry "resetnicekX".

Pr.

Áno, dá sa to urobiť aj inak, napr. takto:
=RIGHT(A4;LEN(A4)-FIND(" ";A4))
=ZPRAVA(A4;DÉLKA(A4)-NAJÍT(" ";A4))

alebo
=REPLACE(A4;1;FIND(" ";A4);"")
=NAHRADIT(A4;1;NAJÍT(" ";A4);"")

Som teraz len na mobile, keď prídem, môžem Vám to poslať celé, každopádne:
-Modul odstránte iba jeden.
-V zostávajúcom Module nahraďte kód, ktorý tam je, kódom ktorý som poslal.
-Na názve Modulu nezáleží
-Názvy makier a priradenie k tlačítkam je tak ako ste mal.
-Dala by sa urobiť jedna spoločná procedúra na mazanie, ale aj tak by muselo mať každé tlačitko svoju na volanie tej spoločnej. Ušetrilo by sa pár riadkov možno, ale Vy ako laik by ste bol asi zmätenejší.

EDIT: Prikladám prílohu...

Nemôžete ukladať priamo pod disk C: (to platí hlavne pri Win10)
Vytvorte tam zložku napr. PDF a zmente v kóde
Filename:= "c:\excel-tisk-uvod.pdf"
na
Filename:= "c:\PDF\excel-tisk-uvod.pdf"
Skúste, či je to tým.

EDIT:
Inak tie Vaše makrá, aj logiku pomenovania súborov by som určo zmenil napr. minimálne takto :
-Module2 úplne odstráňte
-V Module1 všetko vymažte a dajte tam:
Sub vymaz_prijmy() ' vymaz_prijmy Makro
Range("C4:D5").ClearContents
Range("C4").Select
End Sub
Sub vymaz_vydaje() ' vymaz_vydaje Makro
Range("C11:C16,I11:I16,K11:K15,C23:K28,C33:K44,C50:E57,J50:K53").ClearContents
Range("C11").Select
End Sub
Sub vymaz_bydleni() ' vymaz_bydleni Makro
Range("C11:C16").ClearContents
Range("C11").Select
End Sub
Sub vymaz_uvery() ' vymaz_uvery Makro
Range("I11:I16,K11:K15").ClearContents
Range("I11").Select
End Sub
Sub vymaz_auto() ' vymaz_auto Makro
Range("C23:K28").ClearContents
Range("C23").Select
End Sub
Sub vymaz_provozni() ' vymaz_provozni Makro
Range("C33:K44").ClearContents
Range("C33").Select
End Sub
Sub vymaz_fixni() ' vymaz_fixni Makro
Range("C50:E57").ClearContents
Range("C50").Select
End Sub
Sub vymaz_OSVC() ' vymaz_OSVC Makro
Range("J50:K53").ClearContents
Range("J50").Select
End Sub
Sub tisk_uvod() ' tisk_uvod Makro
Dim Nazev As String, Slozka As String
Slozka = "C:\PDF\"
With ActiveSheet
Nazev = Slozka & IIf(.Name = "Úvod", .Range("L5").Value2 & " - roční přehled.pdf", .Range("H3").Value2 & " - rozvaha nákladů " & UCase(Format(DateSerial(2018, Val(.Name), 1), "mmmm")) & ".pdf")
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Nazev, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End With
End Sub


Všetky tie ".Select", čo tam ostali sa dajú nahradiť za ".Activate", alebo za "Application.Goto prvá_bunka", všetko podľa toho, či je/nieje pred stlačením niečo označené, ak áno či sa má zachovať výber, či sa má skočiť na prvú bunku mazanej oblasti + či sa má naskrolovať, alebo sa nemá nič robiť okrem zmazania, a pod.

Predpokladá sa že máte adresár C:\PDF vytvorený, a názvy súborov sa robia podľa aktívneho listu a mena zákazníka v ňom. Teda sa predpokladá, že mená listov sú presne tak, ako sú v príklade.

Vložte ho na GoogleDrive, Ulož.to a pod... , lebo aj keď ho zazipujete, zas neprejde kvôli veľkosti.

Ak urobil to čo som navrhoval (odstránenie riadkov/stĺpcov, nie iba vymazanie), a tvrdí že urobil, tento prípad by mal byť vylúčený.

Myslíte aby bol znížený výsledok na maximum, nie časť výsledku.
A1=1
B1=5
C1=MIN(A1+B1;4)

teda ak súčet A1+B1 bude väčší ako maximálna prípustná hodnota 4, tak je výsledok 4. Ale ak by bola B1=2 výsledok by bol 3.

EDIT: Ak to myslíte inak, uveďte príklad normálnej a upravenej hodnoty (hodnôt).

Pozrite prípadne, či tam nemáte ešte nejaké
-Prepojenia (Údaje - Prepojenia)
-PQ dotazy (Údaje - Zobraziť dotazy)
-Skryté listy (Alt F11 - pod VBA projektom s názvom Vašeho zošita bude zoznam listov (aj skrytých) v "Microsoft Excel Objects")

Už sa tu obdobné veci riešili, no nepamätám s akým výsledkom...

a) niesú na listoch nejaké skryté objekty ?
Karta Domov - skupina Úpravy - tlačítko Nájsť a filtrovať - položka Tabla výberu.

b) niekedy použité, ale už nepoužívané stĺpce a riadky. Ide posuvníkom (nie scrolovaním) posúvať riadky/stĺpce ďaleko za posledný reálne zaplnený riadok/stĺpec? Ak áno tak v prípade riadkov:
-Ctrl+šípka dole Vás dá na posledný riadok Excelu. Označte ho celý za jeho uško.
-Posunte sa za posledný vyplnený dátový riadok a s podržaným Shift-om označte aj ten za jeho uško.
-Ostali všetky označené, teraz na niektoré z označených ušiek pravý klik a vybrať Odstrániť.
-V prípade stĺpcov je postup analogický, šípku dole nahradíte šípkou vpravo, a označenie riadkov nahradíte označením stĺpcov.

Súbor uložte, zatvorte, skontrolujte veľkosť.

Zabráneniu vymazania posledného stĺpca ste neporozumel. Ja nemám na mysli posledný stĺpec v poradí v tabuľke, ale posledný zostávajúci (nevymazaný) stĺpec tabuľky. Logická úvaha: Načo spúšťam makro na vymazanie 5 stĺpcov z 5-stĺpcovej tabuľky ??? Aby som spracovával "žiadne" dáta ??? Teda ak je zostávajúci počet stĺpcov tabuľky 1, nedovolí Vám ho zmazať. On samozrejme zmazať ide, ale je to logický nezmysel.

Doplnené nejaké kontrolné podmienky na existenciu dát, na nemožnosť vymazať posledný stĺpec, na kontrolu stĺpcov s nejakými číslami a následné vkladanie súčtov, atď.

Ale upraviť Vám tie hlavičky, to sa nedá. Nevieme čo z toho množstva parametrov potrebujete nastavovať. Vyremoval som pár riadkov, ktoré si podľa názvu myslím, že nepotrebujete. Ale to si musíte sám určiť. My nevieme či chcete vynútenú BW tlač, tlač na A4 či A3, Zoom, párne hlavičky iné ako nepárne, a pod. Treba si vygoogliť (alebo vyskúšať) čo tie parametre všetky robia. Keď som tieto vyremoval, nezdá sa mi, že by nastala nejaká zmena.


Strana:  1 ... « předchozí  164 165 166 167 168 169 170 171 172   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