worksheet change nur einmal ausführn
09.08.2004 04:04:15
Sandy
ich möchte in einer Zelle addieren und zwar, daß die Neueingabe zu dem vorherigen Wert in der Zelle hinzuaddiert wird.
Also speicher ich beim Öffnen des Sheets alle Werte in einem array.
Über die Worksheet_change methode ermittel ich dann die Position und den Inhalt der Änderung, der dann über den entsprechenden Index im array hinzuaddiert wird und in das Sheet zurückgeschrieben wird.
Leider hab ich dabei 2 Probleme :
Beim Zurückschreiben des neuen Wertes vom array ins sheet, hab ich wieder ein worksheet_change ereignis, was nicht sein soll.
Und der range vom array ist nur beim 1ten Öffnen bekannt, Public sarray() funzt net in einem Objektmodul
Vielleicht kennt jemand eine Lösung für das Problem oder eine andere Vorgehensweise ?
viele grüsse, sandy
Option Explicit
Public sarray() As String
Public icells As Integer
Public sRange As String
Sub worksheet_activate()
Dim iIndex As Integer 'Zähler für den Index
Dim iRow As Integer 'Schleifenzähler für die Zeilen
Dim iCol As Integer 'Schleifenzähler für die Spalten
sRange = "A1:b7" ' Range festlegen
' Die Anzahl der Zellen ermitteln
icells = Range(sRange).Cells.Count
' Das Array per Redim dimensionieren
ReDim sarray(icells - 1)
'nun über alle Zeilen und Spalten die Werte ins Array einlesen
For iCol = 1 To Range(sRange).Columns.Count
For iRow = 1 To Range(sRange).Rows.Count
sarray(iIndex) = Range(sRange).Cells(iRow, iCol).Value
iIndex = iIndex + 1
Next
Next
Debug.Print sarray(1)
End Sub
Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 3 Then
Exit Sub
Else
sRange = ("a1:" & Target.Address)
icells = (Range(sRange).Cells.Count) ' Anzahl der Zellen bis zum Target
Debug.Print sarray(icells) ' alter Zellwert
sarray(icells) = sarray(icells) + Target.Value 'neuer Zellwert
Target.Value = sarray(icells) ' neuen Zellwert ins Sheet übertragen
End If
End Sub