Excel: potřebuji makro pro porovnání dat Vyřešeno

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

Moderátor: Mods_senior

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod navstevnik » 18 kvě 2010 12:33

Udalostni procedura respektujici posledni pozadavek- modul list2:

Kód: Vybrat vše

Private Sub Worksheet_Change(ByVal Target As Range)
' udalostni procedura snizi stav ks v prislusnem zaznamu na list1,
' zaznamy na list1 jsou jedinecne
' deklarace promennych
  Dim Cll As Range, SBlk As Range, OK As Boolean
  ' omezeni rozsahu promenne target na jednu bunku pri mazani bloku bunek
  Set Target = Target.Resize(1, 1)
  ' test, zda Target je ze sloupce D:D
  If Not Intersect(Target, Me.Range("d:d")) Is Nothing Then
    ' nastavi promennou OK na hodnotu False
    OK = False
    ' nastavit blok bunek na listu1
    With Worksheets("list1")
      Set SBlk = Intersect(.UsedRange, .Range("a:a"))
    End With
    ' prohledat sloupec A:A na listu1, hledat hodnotu z list2!Axx - nazev
    With SBlk
      Set Cll = .Find(Target.Offset(0, -3).Value, LookIn:=xlValues, LookAt:=xlWhole)
      If Not Cll Is Nothing Then
        ' nalezeno ve sloupci A:A, overit zda se shoduje upresneni
        If Cll.Offset(0, 1).Value = Target.Offset(0, -2).Value Then
          ' overit, zda seshoduje i nazev
          If Cll.Offset(0, 2).Value = Target.Offset(0, -1).Value Then
            ' snizit hodnotu kusu na listu1, kdyz bude vysledek >=0
            If Cll.Offset(0, 3).Value - Target.Value >= 0 Then
              Cll.Offset(0, 3).Value = Cll.Offset(0, 3).Value - Target.Value
            Else
              MsgBox "Zustatek je < 0, blabla..."
              ' odstranit vlozenou hodnotu kusu na listu2, potlacit prepocet a volani procedury
              Application.EnableEvents = False
              Target.Value = vbNullString
              Application.EnableEvents = True
            End If
            OK = True
          End If
        End If
      End If
    End With
    Set Cll = Nothing
    Set SBlk = Nothing
    If Not OK Then MsgBox "Nenalezeno...blabla"
  End If
End Sub

Reklama
kluluk
nováček
Příspěvky: 15
Registrován: květen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod kluluk » 18 kvě 2010 13:24

Mockrat dekuji, funguje vyborne.
Mam jeste jednu prosbicku tohle je perfektni a uz to funguje jak ma. Akorat mam problem o kterem jsem predtim nevedel.
Mam na prvnim listu tenhle kod, ktery mi hlida, kdyz uzivatel zmeni kusy na 0, tak smaze cely radek. Jenze kdyz to zmeni makro tak mi to nejak nereaguje. Mohl bych poprosit jeste o pomoc a malou upravu nasledujiciho kodu?
dekuji moc kluluk



Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = "4" Then
Call smazat_nuly
End If
End Sub


Sub smazat_nuly()
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
End With
With ActiveSheet
.Select
ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView
.DisplayPageBreaks = False
Firstrow = .UsedRange.Cells(4).Row
Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
For Lrow = Lastrow To Firstrow Step -1
With .Cells(Lrow, "D") ' Sloupec s hledanými podmínkami
If Not IsError(.Value) Then
Select Case .Value
Case Is = "0": .EntireRow.Delete 'podmínka v uvozovkách
End Select
End If
End With
Next Lrow
End With
ActiveWindow.View = ViewMode
With Application
.Calculation = CalcMode
End With
End Sub

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat  Vyřešeno

Příspěvekod navstevnik » 18 kvě 2010 14:20

Pokud je potreba odstranit zaznam na list1 v pripade, kdy uzivatel v zaznamu na tomto listu vynuluje pocet ks nebo je pocet ks vynulovan po zapisu poctu ks na listu2 prislusnou udalostni procedurou listu2, pak postaci nasledujici procedura vlozena do modulu list1:

Kód: Vybrat vše

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
' udalostni procedura odstrani zaznam, ve kterem byl pocet ks dodatecne vynulovan
' omezeni rozsahu promenne target na jednu bunku pri mazani bloku bunek
  Set Target = Target.Resize(1, 1)
  ' test, zda Target je ze sloupce D:D
  If Not Intersect(Target, Me.Range("d:d")) Is Nothing Then
    If Target.Value <= 0 Then
      Application.EnableEvents = False
      Target.EntireRow.Delete Shift:=xlShiftUp
      Application.EnableEvents = True
    End If
  End If
End Sub

kluluk
nováček
Příspěvky: 15
Registrován: květen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod kluluk » 18 kvě 2010 14:32

Dekuji, dekuji, dekuji :-)
Vsechno funguje jak ma.
Diky za pomoc kluluk

// Označuji za vyřešené. Příště prosím viewtopic.php?f=85&t=26719&p=160986#p160986
// mike007


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Porovnání technologie TV
    od Faster1 » 04 zář 2023 06:01 » v Vše ostatní (hw)
    6
    1967
    od Faster1 Zobrazit poslední příspěvek
    08 zář 2023 16:27
  • Porovnání hodnot ve sloupci Příloha(y)
    od luko02420 » 02 srp 2023 14:12 » v Kancelářské balíky
    0
    1689
    od luko02420 Zobrazit poslední příspěvek
    02 srp 2023 14:12
  • Potřebuji sestavit na czc herní pc do 25.000,-
    od DannyXXGr » 17 bře 2024 17:10 » v Rady s výběrem hw a sestavením PC
    4
    712
    od meda2016 Zobrazit poslední příspěvek
    18 bře 2024 08:07
  • Makro pro myš Rapture Python
    od mmmartin » 27 srp 2023 15:18 » v Problémy s hardwarem
    9
    1161
    od mmmartin Zobrazit poslední příspěvek
    29 srp 2023 16:47
  • Potřebuji ikonu, aby byla stále zobrazena
    od Minapark » 14 dub 2024 12:32 » v Windows 11, 10, 8...
    8
    1615
    od Minapark Zobrazit poslední příspěvek
    17 dub 2024 07:52

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

Kdo je online

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