'entwickelt von Winfried Radner 'e-mail: Wolf.W.Radzinski@onlinehome.de 'Benutzung frei - ohne Gewähr '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ '+ '+ '+ kumulative Zahlen-/StringEingabe in Zellen eines Arbeitsblattes '+ '+ '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ '+ '+ '+ folgender Code gehört in ein eigenes Modul (z.B. "Modul1") '+ und "verwaltet" die globale Variable alter_wert = '+ Inhalt der Zelle beim Hingehen '+ '+ '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Private alter_wert As Variant Private kum As Boolean Public Property Get aw() As Variant aw = alter_wert End Property Public Property Let aw(ByVal setze_aw As Variant) alter_wert = setze_aw End Property '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ '+ Erweiterung, um z.B. Formeleingabe zu ermöglichen '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Public Property Get kumulativ() As Variant kumulativ = kum End Property Public Property Let kumulativ(ByVal setze_kum As Variant) kum = setze_kum End Property Public Sub start_stop_kumulativ() kumulativ = Not kumulativ() MsgBox kumulativ End Sub '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ '+ '+ '+ folgender Code gehört in "DieseArbeitsmappe" '+ und setzt den Startwert der globalen Variablen '+ '+ '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Private Sub Workbook_Open() aw = ActiveCell kumulativ = True End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) aw = ActiveCell kumulativ = True End Sub '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ '+ '+ '+ folgender Code gehört in das Codeteil der Tabelle, '+ für welche man kumulierte Eingabe in Zellen wünscht - '+ will man dies nicht für ALLE Zellen des Blattes, '+ muß man das Worksheet_Change Ereignis entsprechend anpassen. '+ '+ '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Private Sub Worksheet_Change(ByVal Target As Excel.Range) 'die boolsche Variable dient dazu, die kumulative 'Eingabe temporär zu verhindern! Wird mittels 'der Funktion start_stop_kumulativ gesetzt 'Startwert ist true If Not kumulativ Then Exit Sub On Error GoTo enable_events_reset Const trennzeichen = Null 'wer ein Trennzeichen benötigt ändert obige Zeile! Application.EnableEvents = False 'wird die aktive Zelle geleert, dann wird auch 'der alte_wert gelöscht und nicht kumuliert 'wer dies nicht will entfernt den nächsten If-Block If IsEmpty(Target) Then aw = "" Range(Target.Address) = "" GoTo enable_events_reset End If If IsNumeric(Target) Then Range(Target.Address) = Target + aw Else Range(Target.Address) = aw & trennzeichen & Target End If enable_events_reset: Application.EnableEvents = True End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) aw = Target End Sub