968 Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (926 Punkte)
Hallo Helfer,
das folgende Makro funktioniert schon beinahe so wie es soll.
Aber nur dann wenn man mit ENTER in der Eingabezelle bleibt. Was muss in statt "Eingabe = ActiveCell.Value" im Makro stehen, damit immer der gerade eingegebene Wert ausgelesen wird?
Und NICHT der Wert der Zelle, die man zufällig als nächste aktiviert.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Eingabe As Integer
If Target.Column = 13 And ActiveCell.Value > 0 And ActiveCell.Value < 6 Then
Eingabe = ActiveCell.Value
Cells(Target.Row, 2 + Eingabe) = Cells(Target.Row, 2 + Eingabe) + 1
End If
End Sub
ABER wenn Excel so eingestellt ist, das die aktive Zelle eine Zeile nach unten geht,
Vielen Dank im Voraus
mfg
Wolfgang

5 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Wolfgang,

probier's mal so

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 13 And Target.Value > 0 And Target.Value < 6 Then
Cells(Target.Row, 2 + Target.Value) = Cells(Target.Row, 2 + Target.Value) + 1
End If
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Rainer,
vielen Dank für deine Mühe am frühen Morgen.
Leider macht deine Version den gleichen Fehler wie meine.
mfg
Wolfgang
PS
Ich bin dann erst wieder ab ca 11:00 Uhr am PC
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Wolfgang,

dann so

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 13 And Target.Value > 0 And Target.Value < 6 Then
Cells(Target.Row, 2 + Target.Value) = Cells(Target.Row, 2 + Target.Value) + 1
End If
Application.EnableEvents = True
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Korrektur

besser so:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 13 Or Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
If Target.Value > 0 And Target.Value < 6 Then
Cells(Target.Row, 2 + Target.Value) = Cells(Target.Row, 2 + Target.Value) + 1
End If
Application.EnableEvents = True
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Rainer,
entschuldige bitte Rainer. Schon deine 1te Antwort hatte das Problem gelöst. Ich hätte mich erst nach dem ersten Kaffe an den PC setzen sollen.
Deine zweite Antwort hat gleich noch ein weiteres Problem gelöst. (eingeben / reinkopieren in mehrere Spalten gleichzeitig führte zur Fehlermeldung).
Vielen Dank
mfg
Wolfgang
...