Automatisk sortering & kontroll
Det första tipset här visar hur vi relativt enkelt kan sortera en lista i stigande ordning när nya poster matas in eller när poster tas bort inom ett definierat cellområde.Det andra tipset visar hur vi vid inmatning kan kontrollera om en intilliggande cell har ett värde eller inte.
Gemensamt för båda exemplena är dels att vi nyttjar händelseproceduren Worksheet_Change för aktuellt arbetsblad och att vi använder oss av Application.EnableEvents.
Automatisk sortering
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'© 2002 Alla rättigheter XL-Dennis
Dim rnArea As Range, rnSort As Range
Application.EnableEvents = False
Set rnArea = Range("B1:B10")
Set rnSort = Range("B1:C10")
If Not Intersect(Target, rnArea) Is Nothing Then
If IsEmpty(Target) Then
'Här tas datumet bort i C-kolumnen för en borttagen post i B-kolumnen.
Cells(Target.Row, 3).ClearContents
Else
'Här skrivs datumet in i C-kolumnen för en inmatat post i B-kolumnen.
Cells(Target.Row, 3).Value = Date
End If
End If
Application.EnableEvents = True
'Här sker automatisk sortering för cellområdet utifrån B-kolumnen.
rnSort.Sort Key1:=Range("B1"), Order1:=xlAscending
End Sub
Kontroll om intilliggande cell håller ett värde eller inte
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
'© 2002 Alla rättigheter XL-Dennis
Dim rnArea As Range
Application.EnableEvents = False
Set rnArea = Range("B1:B10")
If Not Intersect(Target, rnArea) Is Nothing Then
'Kontroll om intilliggande cell i A-kolumnen håller ett värde eller inte.
If IsEmpty(Cells(Target.Row, 1)) Then
MsgBox "Ett värde måste anges i A-kolumnen.", vbInformation
Cells(Target.Row, 1).Select
End If
End If
Application.EnableEvents = True
End Sub