Makro při změně hodnoty v bunce,úprava vzorce Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

esi32
Level 1
Level 1
Příspěvky: 59
Registrován: duben 12
Pohlaví: Muž
Stav:
Offline

Makro při změně hodnoty v bunce,úprava vzorce

Příspěvekod esi32 » 09 čer 2012 02:23

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í..
Přílohy
Pomoc.xlsm
(127.79 KiB) Staženo 43 x

Reklama
pavel.lasak
Level 2
Level 2
Příspěvky: 197
Registrován: duben 12
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Makro při změně hodnoty v bunce,úprava vzorce

Příspěvekod pavel.lasak » 09 čer 2012 21:14

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í)
Více o kancelářském balíku MS Office na http://office.lasakovi.com/ (Word, Excel, PowerPoint, Access, Outlook, Project, OneNote)

cmuch
Level 4.5
Level 4.5
Příspěvky: 1547
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: Makro při změně hodnoty v bunce,úprava vzorce

Příspěvekod cmuch » 09 čer 2012 21:32

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ěď.

esi32
Level 1
Level 1
Příspěvky: 59
Registrován: duben 12
Pohlaví: Muž
Stav:
Offline

Re: Makro při změně hodnoty v bunce,úprava vzorce

Příspěvekod esi32 » 09 čer 2012 21:51

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.

cmuch
Level 4.5
Level 4.5
Příspěvky: 1547
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: Makro při změně hodnoty v bunce,úprava vzorce

Příspěvekod cmuch » 10 čer 2012 16:51

Tak asi esi32 takto. :D
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.

esi32
Level 1
Level 1
Příspěvky: 59
Registrován: duben 12
Pohlaví: Muž
Stav:
Offline

Re: Makro při změně hodnoty v bunce,úprava vzorce

Příspěvekod esi32 » 11 čer 2012 01:24

Zdravím asi takto,Cmuch :D
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.

cmuch
Level 4.5
Level 4.5
Příspěvky: 1547
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: Makro při změně hodnoty v bunce,úprava vzorce

Příspěvekod cmuch » 11 čer 2012 07:16

Tak jsem doplnil popisky do makra v předchozím příspěvku.
Dofám, že je to dostačující.

esi32
Level 1
Level 1
Příspěvky: 59
Registrován: duben 12
Pohlaví: Muž
Stav:
Offline

Re: Makro při změně hodnoty v bunce,úprava vzorce  Vyřešeno

Příspěvekod esi32 » 11 čer 2012 13:39

Tak popis trošku pomohl a tak to zkouším,ale asi jsem někde trošku mimo.

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
  • Uprava vzorce
    od junis » 27 črc 2024 15:43 » v Kancelářské balíky
    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

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti