Stránka 1 z 1

Excel hlídání změn

Napsal: 13 úno 2014 15:17
od birgis
Ahoj všem,
prosím o radu, jak zaznamenávat změny v buňkách. Poskládal jsem si makro, které vypadá takto:

Kód: Vybrat vše

Dim OldVal, Pozice

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    OldVal = Target
    Pozice = ActiveCells.Address
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range, i, radek
    Dim JmenoPC, JmenoExcel
     
Set KeyCells = Range("A1:AZ9999") ' *** hlídaná oblast ************

    JmenoPC = Environ("UserName")
    JmenoExcel = Application.UserName
    NewVal = Target.Value
                       
    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

radek = 1   'nastaveni radek jako 1
For i = 1 To Cells.SpecialCells(xlLastCell).Row
    If Sheets("Zmeny").Cells(i, 1) <> "" Then
        radek = radek + 1
    End If
Next
   
    Sheets("Zmeny").Cells(radek, 1).Value = Format$(Now, "yyyy/mm/dd hh:nn:ss")
    Sheets("Zmeny").Cells(radek, 2).Value = JmenoPC
    Sheets("Zmeny").Cells(radek, 3).Value = JmenoExcel
    Sheets("Zmeny").Cells(radek, 4).Value = Pozice
    Sheets("Zmeny").Cells(radek, 5).Value = OldVal
    Sheets("Zmeny").Cells(radek, 6).Value = NewVal
   
   
    End If
End Sub


Na Listu1 jsou hlídané hodnoty, při změně buňky chci zapsat do Superskrytého listu Zmeny řádek. A moje problémy:
1. Pokud změním buňku A1 z hodnoty "AAA" na "BBB" zapíše se vše v pořádku (OldVal = "AAA", NewVal = "BBB"
Pokud opět změním buňku A1 z hodnoty "BBB" na "CCC" zapíše se OldVal = "AAA", NewVal = "CCC" a to je chyba

2. Do proměnné pozice se mi uloží aktuální pozice kurzoru - a já bych tam potřeboval pozici změněné buňky.


Díky všem za radu

Re: Excel hlídání změn

Napsal: 13 úno 2014 23:12
od lubo.
Použití SpecialCells spustí selectionchange.

Zkus použít lepší způsob hledání posledního řádku

(třeba radek = Sheets("Zmeny").Cells(1, 1).CurrentRegion.Rows.CountLarge + 1)

nebo Application.EnableEvents

Re: Excel hlídání změn  Vyřešeno

Napsal: 14 úno 2014 07:01
od cmuch
Nefunguje to protože jak píše lubo, jedině že by jsi upravil

Kód: Vybrat vše

Cells.SpecialCells(xlLastCell).Row
na toto

Kód: Vybrat vše

Sheets("Zmeny").Cells.SpecialCells(xlLastCell).Row


a toto

Kód: Vybrat vše

Pozice = ActiveCell.Address
na

Kód: Vybrat vše

Pozice = Target.Address

pak to bude také fungovat.

Re: Excel hlídání změn

Napsal: 14 úno 2014 11:21
od birgis
Pánové teď je to perfektní, moc díky za pomoc oběma.