HERBERS Excel-Forum - die Beispiele

Thema: Fußballergebnisse eingeben und Tabelle sortieren

Home

Gruppe

Ereignis

Problem

Im Bereich B2:E5 werden Spielergebnisse eingegeben. Punkte und Tore werden automatisch errechnet und es wird nach Tabellenplatz sortiert.

Lösung
Geben Sie den nachfolgenden Code in das Klassenmodul der UsereForm ein.
ClassModule: Tabelle1

Private Sub Worksheet_Change(ByVal Target As Range)
   If Intersect(Target, Range("B2:E5")) Is Nothing Then Exit Sub
   On Error GoTo 0
   If Cells(Target.Row, 1).Value = Cells(1, Target.Column).Value Then
      Application.EnableEvents = False
      Beep
      MsgBox "Hier sind keine Eingaben erlaubt!"
      Target.ClearContents
      Application.EnableEvents = True
      Exit Sub
   End If
   If InStr(Target.Value, ":") = False Then
      Application.EnableEvents = False
      Beep
      MsgBox "Ungültige Eingabe!"
      Target.ClearContents
      Application.EnableEvents = True
      Exit Sub
   End If
   Call Sortieren
ERRORHANDLER:
   Application.EnableEvents = True
End Sub

StandardModule: Modul1

Function Points(rng As Range) As Integer
   Dim oCell As Range
   Dim iPoints As Integer, iAct As Integer
   Dim sTxt As String
   For Each oCell In rng.Cells
      If Not IsEmpty(oCell) Then
         sTxt = oCell.Value
         iAct = Left(sTxt, InStr(sTxt, ":") - 1) - _
            Right(sTxt, Len(sTxt) - InStr(sTxt, ":"))
         Select Case iAct
            Case Is > 0
               iPoints = iPoints + 3
            Case Is = 0
               iPoints = iPoints + 1
         End Select
      End If
   Next oCell
   Points = iPoints
End Function

Function Goals(rng As Range) As Integer
   Dim oCell As Range
   Dim iGoals As Integer, iAct As Integer
   Dim sTxt As String
   For Each oCell In rng.Cells
      If Not IsEmpty(oCell) Then
         sTxt = oCell.Value
         iAct = Left(sTxt, InStr(sTxt, ":") - 1) - _
            Right(sTxt, Len(sTxt) - InStr(sTxt, ":"))
         iGoals = iGoals + iAct
      End If
   Next oCell
   Goals = iGoals
End Function

Function GoalsCount(rng As Range) As Integer
   Dim oCell As Range
   Dim iGoals As Integer, iAct As Integer
   Dim sTxt As String
   For Each oCell In rng.Cells
      If Not IsEmpty(oCell) Then
         sTxt = oCell.Value
         iAct = Left(sTxt, InStr(sTxt, ":") - 1)
         iGoals = iGoals + iAct
      End If
   Next oCell
   GoalsCount = iGoals
End Function

Sub Sortieren()
   Range("B1").CurrentRegion.Sort _
      key1:=Range("F2"), order1:=xlDescending, _
      key2:=Range("G2"), order2:=xlDescending, _
      key3:=Range("H2"), order3:=xlDescending
End Sub

Sub Schuetzen()
   ActiveSheet.Protect userinterfaceonly:=True
End Sub

Beiträge aus dem Excel-Forum zu den Themen Ereignis und Change

Msg mit 2 Ereignissen +Cancel Ereignisprozedur
Worksheet_Change auf 2 Zellen anwenden Mit Change() o. Calculate() Filtern und Drucken
Grafik nach Change in Exceltabelle laden Makro für ereignisabh. Druck verschiedener Seiten
UF Activate / Initialize Ereignis Namen definiert- in Ereignis verwenden?
Mail Exchange Server Workbook_SheetChange löscht Zwischenspeicher ...
On Worksheet Change - simulieren?! ChangeFileAccess
Zeilen aus- einblenden als Ereignis? Welches Ereignis ist das richtige ??
Ereignis Arbeitsblatt sperren abfangen Worksheet_SelectionChange
Ereignisprozedur f. Multipage-Reiter Frage zum Change ereignis
Fehler bei Changelink Worksheet_SelectionChange bzw. Interior
Change Kein Change in Combobox erlauben(wenn false)
Überprüfung von Zellen mit Worksheet change SheetChange_Endlosschleife
Change-Ereignis in Combobox unterdrücken Combobox Ereignis
Userform, Ereignis deklarieren im Klassenmodul Bei "Worksheet_Change" aktuelles Datum in J3
Worksheet_Activate() / Worksheet_Change() Warum kann ich nicht Worksheet_Change
Welches Diagramm-Ereignis? Bestimmtes Ereignis in Spalte zählen
Command Button Ereignis Ereignis von Laufzeit-Checkbox
change-ereignis bei dynamischen Controls / Teil 2 Change Ereignis verhindern
Workcheet-Change / Schleife..... change-ereignis bei dynamisch erstellten Controls
Worksheet_Change auf Spalten beschränken Worksheet_Change ohne aktive Zelleingabe
Private Sub Worksheet_Change(ByVal Target As Range For Each CheckBox, Change Value
Change(ByVal Target as range ComboBox.Change - ComboBox.Load Problem
Zwei Mal If inersect Ranges nach Worksheet change Schaltfläche - Ereignis erst nach Bestätigung ausl
SelectionChange - Change - Reihenfolge? Schleife bei Worksheet_Change
Objekt_Error - Ereignis in UserForm "Private Sub Worksheet_Change" deaktivieren