Temat: Nowy artykuł na temat zdarzenia Change
Witam,
praca niewątpliwie wartościowa lecz Zbyszek nie ustrzegł się nieścisłości.
Przykładowo na stronie 4 napisał "jedyna linijka kodu „wykonalnego”, która się w nim znajduje nigdy nie przyczyni się do powstania jakiegokolwiek błędu" i zapomniał o możliwości zabezpieczenia arkusza przez użytkownika.
Nie wiem, czy się zgodzicie, ale podany przykład modułu klasy jest bardzo sztuczny i 'wymuszony', użyty zamiast funkcji.
Ja sugerowałbym jako przykład klasę podobną do poniższej klasy clsZakres:
Private WithEvents cArkusz As Excel.Worksheet
Private cZakres As Excel.Range
Property Set ZakresKontrolowany(ByRef Zakres As Excel.Range)
Set cZakres = Zakres
Set cArkusz = Zakres.Parent
End Property
Private Sub cArkusz_Change(ByVal Target As Range)
On Error GoTo cArkusz_Change_Error
If cZakres Is Nothing Then Exit Sub
Application.EnableEvents = False
If Not Intersect(Target, cZakres) Is Nothing Then
Target.Offset(0, 1).Value = Format(Now)
End If
cArkusz_Change_Exit:
Application.EnableEvents = True
On Error GoTo 0
Exit Sub
cArkusz_Change_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & _
") in procedure cArkusz_Change of Class Module clsZakres"
Resume cArkusz_Change_Exit
End Sub
i przykładowe użycie jej w module arkusza:
Dim myZakres As clsZakres
Private Sub Worksheet_Activate()
Set myZakres = New clsZakres
Set myZakres.ZakresKontrolowany = Me.Columns("A")
End Sub