2k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo
vielen Dank für die Tipps hier, leider kenne ich mich mit VBA nicht so gut aus (ja gar nicht).
Ich würde gern das Makro erweiter

If Range("D4:D8").Value > 0 Then
Range("A4:A8").Select
ActiveCell.FormulaR1C1 = "0"
End If
End Sub

aber es geht so nicht kann mir einer ein Denkanstoß oder Tipp geben.
Vielen dank im voraus

7 Antworten

0 Punkte
Beantwortet von
Sorry mein Fehler
www.supportnet.de/stat/2003/4/id133991.asp
Zellen wert ändern bei Eingabe in einer anderen

orginal VBA
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D4").Value > 0 Then
Range("A4").Select
ActiveCell.FormulaR1C1 = "0"
End If
End Sub

Eine Erweiterung von D4 nach D7 / A4 nach A7 wäre super
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

ich hoffe, ich habe dich richtig verstanden. Trage das Makro in das VBA-Projekts des betreffenden Arbeitsblatts ein:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("D4:D7")) Is Nothing Then Cells(Target.Row, 1) = "0"

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von homeros Einsteiger_in (13 Punkte)
Hallo M.O.,

danke für die Antwort.

Kannst du mir verraten wenn ich nicht nur was in der Zelle A was zurücksetzten möchte sonder Zelle A Zelle B und ZelleC

Ich und wo ändere ich das in

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("D4:D7")) Is Nothing Then Cells(Target.Row, 1) = "0"

End Sub
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Frank,

mit
Cells(Target.Row, 1) = "0"
wird der Wert in Spalte A geschrieben, wobei 1 die Spalte A darstellt.

Wenn du in mehreren Spalten etwas schreiben möchtest, müsste das Makro so aussehen:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("D4:D7")) Is Nothing Then
Cells(Target.Row, 1) = "0" 'Spalte A
Cells(Target.Row, 2) = "0" 'Spalte B
Cells(Target.Row, 3) = "0" 'Spalte C
End if
End Sub


Gruß

M.O.
0 Punkte
Beantwortet von homeros Einsteiger_in (13 Punkte)
Hallo M.O.,

vielen Dank für die schnelle AW.

Leider habe ich jetzt das Problem das die Tabelle nicht mehr durch das Makro reagiert :(

[code]Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("L5:D35")) Is Nothing Then
Cells(Target.Row, 1) = "0" 'Spalte A
Cells(Target.Row, 2) = "0" 'Spalte B
Cells(Target.Row, 3) = "0" 'Spalte C
Cells(Target.Row, 4) = "0" 'Spalte D
Cells(Target.Row, 5) = "0" 'Spalte E
Cells(Target.Row, 6) = "0" 'Spalte F
Cells(Target.Row, 7) = "0" 'Spalte G
End If
End Sub

Hast du ein verbesserungs vorschlag?

Wenn du nach den Zweck fragen solltes

A bis G sind Gegenstände die Ausgeliehn werden dürfen.
Sie sollen aber nach der Rückgabe auf null gesetzt werden (Rückgabe L).

Hast du eine Idee?
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

du hast den Bereich auf L5 bis D35 ausgedehnt, gleichzeitig wird dann in die Spalten D bis G der Wert 0 geschrieben. Das Makro befindet sich in einer Endlosschleife. Mit dem Drücken der Taste "ESC" kannst du in diesem Fall das Makro stoppen.

Passe also den Bereich an, den das Makro überwachen soll und achte darauf, dass sich dieser Bereich nicht mit den Spalten überschneidet, in die etwas geschrieben wird.

Wahrscheinlich also etwa so:

If Not Intersect(Target, Range("L5:L35")) Is Nothing Then

oder als Code insgesamt:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("L5:L35")) Is Nothing Then
Cells(Target.Row, 1) = "0" 'Spalte A
Cells(Target.Row, 2) = "0" 'Spalte B
Cells(Target.Row, 3) = "0" 'Spalte C
Cells(Target.Row, 4) = "0" 'Spalte D
Cells(Target.Row, 5) = "0" 'Spalte E
Cells(Target.Row, 6) = "0" 'Spalte F
Cells(Target.Row, 7) = "0" 'Spalte G
End If
End Sub


Gruß

M.O.
0 Punkte
Beantwortet von homeros Einsteiger_in (13 Punkte)
Hallo M.O,

Super dass ist die Lösung.
...