Dobrý den,
opět bych potřeboval Vaši pomoc.Potřebuji vyhodnotit klienta na listě Evidence faktur,jestli zaplatil,nebo ne.Pokud bude vyhodnocen jako neplatič,potřeboval bych,aby se automaticky nakopírovala jeho data do prvního prázdného řádku na dalším listě Seznam neplatičů.Kopírování by mělo proběhnout v okamžiku,kdy se v bunce Q objeví slovo neplatič.Druhý problém mám se vzorcem,který mi vypisuje u klientů,kteří ještě nemají např.vystavenou fakturu,číslo 41069.To mi tam dělá paseku a potřeboval bych to odstranit.
V vzorovém sešitě jsem se snažil problém popsat.Když bude potřeba,tak se budu snažit vysvětlit dodatečně.
Děkuji za případnou pomoc a řešení..
Makro při změně hodnoty v bunce,úprava vzorce Vyřešeno
Makro při změně hodnoty v bunce,úprava vzorce
- Přílohy
-
- Pomoc.xlsm
- (127.79 KiB) Staženo 43 x
-
- Level 2
- Příspěvky: 197
- Registrován: duben 12
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Makro při změně hodnoty v bunce,úprava vzorce
Pokud dobře chápu - stavy faktury tedy budou:
- zaplacena
- čeká na zaplacení (buď odeslání, nebo je čas než bude zaplaceno)
- nezaplacená (zpoždění v placení)
- zaplacena
- čeká na zaplacení (buď odeslání, nebo je čas než bude zaplaceno)
- nezaplacená (zpoždění v placení)
Více o kancelářském balíku MS Office na http://office.lasakovi.com/ (Word, Excel, PowerPoint, Access, Outlook, Project, OneNote)
-
- Level 4.5
- Příspěvky: 1547
- Registrován: březen 11
- Bydliště: Drsná Vysočina :D
- Pohlaví:
- Stav:
Offline
Re: Makro při změně hodnoty v bunce,úprava vzorce
Tak chyba ve vzorci =KDYŽ(JE.CHYBHODN($L$1-F3);"";$L$1-F3) ve sloupci D není.
Nahradil bych ho tímto =KDYŽ(($L$1-F3)>41000;"";$L$1-F3). Kde 41000 je den po 1.1.1900.
To nakopírování by probíhalo kdy?
Po aktivaci listu SeznamNeplatičů nebo kdy?
Probíhalo by tak že by se načetla oblast na listu EvidenceFaktur slopuce Q a kde by bylo Neplatič tak by se zkopirovali udaje.
Nebo napadne někoho něco jiného.
Edit\\
pavel.lasak měl rychlejší odpověď.
Nahradil bych ho tímto =KDYŽ(($L$1-F3)>41000;"";$L$1-F3). Kde 41000 je den po 1.1.1900.
To nakopírování by probíhalo kdy?
Po aktivaci listu SeznamNeplatičů nebo kdy?
Probíhalo by tak že by se načetla oblast na listu EvidenceFaktur slopuce Q a kde by bylo Neplatič tak by se zkopirovali udaje.
Nebo napadne někoho něco jiného.
Edit\\
pavel.lasak měl rychlejší odpověď.
Re: Makro při změně hodnoty v bunce,úprava vzorce
Děkuji za odezvu,
to: pavel.lasak:Ano,přesně jak říkate.
to:cmuch:to kopírování jsem myslel,že by se to překopírovalo v okamžiku,kdy se ve sloupci Q na jakémkoliv řádku objeví "Neplatič".Ale necham to na Vás.Asi podle obtížnosti.
to: pavel.lasak:Ano,přesně jak říkate.
to:cmuch:to kopírování jsem myslel,že by se to překopírovalo v okamžiku,kdy se ve sloupci Q na jakémkoliv řádku objeví "Neplatič".Ale necham to na Vás.Asi podle obtížnosti.
-
- Level 4.5
- Příspěvky: 1547
- Registrován: březen 11
- Bydliště: Drsná Vysočina :D
- Pohlaví:
- Stav:
Offline
Re: Makro při změně hodnoty v bunce,úprava vzorce
Tak asi esi32 takto.
Nahradil bych vzorec ve sloupci P tímto =KDYŽ(A(H2<>"";H2>0;J2="Nežádá");"Neplatič";"") a zrušil bych sloupec Q.
A toto makro vložil na list SeznamNeplatičů:

Nahradil bych vzorec ve sloupci P tímto =KDYŽ(A(H2<>"";H2>0;J2="Nežádá");"Neplatič";"") a zrušil bych sloupec Q.
A toto makro vložil na list SeznamNeplatičů:
Kód: Vybrat vše
Option Explicit
'provede se pri aktivaci listu
Private Sub Worksheet_Activate()
'definovani promennych
Dim BlkA As Range
Dim CllA As Range
Dim radek As Integer
'definovani bloku bunek na listu ve sloupci P
With Worksheets("EvidenceFaktur")
Set BlkA = .Range(("p2:p") & .Cells(Rows.Count, "p").End(xlUp).Row)
End With
'smazani dat ve sloupcich A, B
Sheets("SeznamNeplatièù").Columns("A:B").ClearContents
'vypne aktualizaci obrazovky
Application.ScreenUpdating = False
'prochazet jednotlive bunky v bloku BlkA
For Each CllA In BlkA.Cells
'jestlize bude v bunce "Neplatic" tak proved jinak preskoc
If CllA.Value = "Neplatiè" Then
'nalezeni prvniho prazdneho radku na listu
'nakopirovani dat
With Sheets("SeznamNeplatièù")
radek = .Range("A1").CurrentRegion.Rows.Count + 1
.Cells(radek, "A") = CllA.Offset(0, -15).Value
.Cells(radek, "B") = CllA.Offset(0, -14).Value
End With
End If
Next CllA
'zapne aktualizaci obrazovky
Application.ScreenUpdating = True
' odstranit objektove promenne
Set CllA = Nothing
Set BlkA = Nothing
End Sub
Naposledy upravil(a) cmuch dne 11 čer 2012 07:15, celkem upraveno 1 x.
Re: Makro při změně hodnoty v bunce,úprava vzorce
Zdravím asi takto,Cmuch
je to super,funguje jak má..Kdybys měl chvilku,mohl bys mi to makro trochu popsat?Zas bych byl o něco chytřejší.Když to pochopim,tak bych si chtěl zkusit makro upravit,aby mi to samé dělalo ještě s jiným řádkem.
Ještě jednou moc děkuju za pomoc a hlavně za ochotu.Dík.

je to super,funguje jak má..Kdybys měl chvilku,mohl bys mi to makro trochu popsat?Zas bych byl o něco chytřejší.Když to pochopim,tak bych si chtěl zkusit makro upravit,aby mi to samé dělalo ještě s jiným řádkem.
Ještě jednou moc děkuju za pomoc a hlavně za ochotu.Dík.
-
- Level 4.5
- Příspěvky: 1547
- Registrován: březen 11
- Bydliště: Drsná Vysočina :D
- Pohlaví:
- Stav:
Offline
Re: Makro při změně hodnoty v bunce,úprava vzorce
Tak jsem doplnil popisky do makra v předchozím příspěvku.
Dofám, že je to dostačující.
Dofám, že je to dostačující.
Re: Makro při změně hodnoty v bunce,úprava vzorce Vyřešeno
Tak popis trošku pomohl a tak to zkouším,ale asi jsem někde trošku mimo.
Zastaví se mi to na tom druhém Dim AS Integrer-chyba dvojitá deklarace.
Co mam blbě?
--- Doplnění předchozího příspěvku (11 Čer 2012 18:22) ---
Tož vyřešeno.Dík za pomoc a ochotu.
Kód: Vybrat vše
Private Sub Worksheet_Activate()
Dim BlkA As Range
Dim CllA As Range
Dim radek As Integer
' definovani bloku bunek na listu
With Worksheets("EvidenceFaktur")
Set BlkA = .Range(("p2:p") & .Cells(Rows.Count, "p").End(xlUp).Row)
End With
' priprava
Sheets("Neplatiči").Columns("A:B").ClearContents
Application.ScreenUpdating = False
' prochazet BlkA
For Each CllA In BlkA.Cells
If CllA.Value = "Neplatič" Then
With Sheets("Neplatiči")
radek = .Range("A1").CurrentRegion.Rows.Count + 1
.Cells(radek, "A") = CllA.Offset(0, -15).Value
.Cells(radek, "B") = CllA.Offset(0, -14).Value
End With
End If
Next CllA
Application.ScreenUpdating = True
' odstranit objektove promenne
Set CllA = Nothing
Set BlkA = Nothing
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++oDKLAD-VYMAZAT?
Dim BlkB As Range
Dim CllB As Range
Dim radek As Integer
' definovani bloku bunek na listu
With Worksheets("EvidenceFaktur")
Set BlkA = .Range(("q2:q") & .Cells(Rows.Count, "q").End(xlUp).Row)
End With
' priprava
Sheets("List2").Columns("A:B").ClearContents
Application.ScreenUpdating = False
' prochazet BlkA
For Each CllB In BlkA.Cells
If CllB.Value = "Odklad splátky" Then
With Sheets("List2")
radek = .Range("A1").CurrentRegion.Rows.Count + 1
.Cells(radek, "A") = CllA.Offset(0, -15).Value
.Cells(radek, "B") = CllA.Offset(0, -14).Value
End With
End If
Next CllB
Application.ScreenUpdating = True
Set CllB = Nothing
Set BlkB = Nothing
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++oDKLAD-VYMAZAT?
End Sub
Zastaví se mi to na tom druhém Dim AS Integrer-chyba dvojitá deklarace.
Co mam blbě?
--- Doplnění předchozího příspěvku (11 Čer 2012 18:22) ---
Tož vyřešeno.Dík za pomoc a ochotu.
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 6
- 5246
-
od junis
Zobrazit poslední příspěvek
02 srp 2024 18:02
-
-
Úprava pc pro Kingdome Come Deliverance 2
od barryk10cz » 07 led 2025 17:00 » v Rady s výběrem hw a sestavením PC - 13
- 3721
-
od Hangli
Zobrazit poslední příspěvek
09 led 2025 22:42
-
-
-
Raspberry - M2 disk - uprava a zaloha oddilu Příloha(y)
od L.L » 18 srp 2024 10:32 » v Problémy s hardwarem - 3
- 3710
-
od L.L
Zobrazit poslední příspěvek
19 srp 2024 14:39
-
-
-
bitmapová grafika - úprava fotografií, retuše, filtry.
od zuzana3 » 10 kvě 2025 11:32 » v Design a grafické editory - 2
- 5110
-
od zuzana3
Zobrazit poslední příspěvek
10 kvě 2025 17:31
-
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů