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