Herbers Excel-Forum - das Archiv

Für Profis:Worksheet_Change und SelectionChange

Bild

Betrifft: Für Profis:Worksheet_Change und SelectionChange
von: Benni
Geschrieben am: 11.11.2003 09:09:58
Hallo Leute!

Hatte mich gestern schon einmal an das Forum gewand, weil ich 2 verschiedene Worksheet_Change- Ereignisse verwirklichen wollte. Yal gab mir den Tipp, das Zweite mit Worksheet_selectionChange zu verarbeiten (Danke nochmal), aber das Problem ist, daß dann das Ereignis schon beim Auswählen der Zelle eintritt, nicht nach der Änderung!

Hier der Code:



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim vNew As Variant, vold As Variant
Dim irow As Integer
If Not Application.Intersect(Target, Range("A15:aq50")) Is Nothing Then
vNew = Target.Value
Application.EnableEvents = False
On Error GoTo errorhandler
With Worksheets("Protokoll")
irow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Unprotect password:=""
.Cells(irow, 1).Value = Target.Address(False, False)
.Cells(irow, 2).Value = "Maschinenzahlen"
.Cells(irow, 3).Value = "Auslastung"
.Cells(irow, 4).Value = vNew
.Cells(irow, 5).Value = Date
.Cells(irow, 6).Value = Application.UserName
.Protect password:=""
End With
Else: Exit Sub
End If
errorhandler:
Application.EnableEvents = True
End Sub





Private Sub worksheet_change(ByVal Target As Range)
'Änderung der Maschinenzahl bis ans Ende der Tabelle übernehmen und neuen Wert ins Protokoll übernehmen
Dim r1 As Range
Dim r2 As Range
Dim rGes As Range
Dim Neuwert As Variant
Dim spalte As Integer
Dim Reihe As Integer
If Intersect(Target, Range("c4:aq13")) Is Nothing Then Exit Sub ' GoTo Aenderung
Neuwert = Target.Value
Application.EnableEvents = False
On Error GoTo errorhandler
Reihe = Target.Row
spalte = Target.Column
Worksheets("Maschinenzahlen").Activate
For i = spalte To 43
Cells(Reihe, i).Value = Neuwert
Next i
With Worksheets("Protokoll")
irow = .Cells(Rows.Count, 1).End(xlUp).Row + 1
.Unprotect password:=""
If irow > 200 Then
.Rows(3).EntireRow.Delete shift:=xlUp '<<<<<
irow = 200
End If
.Cells(irow, 1).Value = Target.Address(False, False)
.Cells(irow, 2).Value = "Maschinenzahlen"
.Cells(irow, 3).Value = "geändert auf:"
.Cells(irow, 4).Value = Neuwert
.Cells(irow, 5).Value = Date
.Cells(irow, 6).Value = BenutzerName1
.Protect password:=""
End With
Hat jemand ne Idee?
MfG Benni
Bild

Betrifft: AW: Für Profis:Worksheet_Change und SelectionChange
von: PeterW
Geschrieben am: 11.11.2003 09:17:49
Hallo Benni,

prinzipiell löst man das so:

If Bedingung1 then
Code1
End If
If Bedingung2 then
Code2
Endif
Die zweite Bedingung sollte dann lauten:
If Not Intersect(Target, Range("c4:aq13")) Is Nothing Then

Gruß
Peter
Bild

Betrifft: Excel kann so einfach sein..., DANKE o.T.!!!
von: Benni
Geschrieben am: 11.11.2003 09:31:30
oT
Bild
Excel-Beispiele zum Thema " Für Profis:Worksheet_Change und SelectionChange"
Beispiele zum Einsatz des SelectionChange-Ereignisses