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

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: 29 srp 2008 16:49

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

Příspěvek od navstevnik »

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
kluluk
nováček
Příspěvky: 15
Registrován: 17 kvě 2010 11:06

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

Příspěvek od kluluk »

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: 29 srp 2008 16:49

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

Příspěvek od navstevnik »

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: 17 kvě 2010 11:06

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

Příspěvek od kluluk »

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
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Porovnaní sestavy + kde muže být problém?
    od Ribendik » » v Rady s výběrem hw a sestavením PC
    2 Odpovědi
    1387 Zobrazení
    Poslední příspěvek od Zivan
  • PROSÍM potřebuji pomoc s výběrem bazar Pc
    od Robrt » » v Rady s výběrem hw a sestavením PC
    2 Odpovědi
    2983 Zobrazení
    Poslední příspěvek od Robrt
  • mpg x570 gaming edge wifi Potřebuji poradit jak na bot BIOSu
    od ManemanTV » » v Problémy s hardwarem
    11 Odpovědi
    8904 Zobrazení
    Poslední příspěvek od ManemanTV
  • Přechod z Excel 21 na Excel 24
    od Snekment » » v Kancelářské balíky
    2 Odpovědi
    14471 Zobrazení
    Poslední příspěvek od Snekment
  • Pohoda a excel
    od brownwld » » v Kancelářské balíky
    1 Odpovědi
    7395 Zobrazení
    Poslední příspěvek od atari

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