Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: Affenfleisch am September 07, 2017, 17:37:26 Nachmittag
-
Hallo Community,
da ich leider nicht so VBA versiert bin hatte ich gehofft, hier eine Antwort zu finden. Folgendes möchte ich realisieren:
Wenn ich in Zelle B2 einen Wert eingebe, der größer als 0 ist, dann sollten Zelle B4-B16 und B18 mit Der Ziffer Null gefüllt werden. Ich kann hier in diesem Beispiel B4 anwählen und er nullt diese auch aber ich finde in Google ums verrecken keine Infos, wie man mehrere Zellen anwählt.
Hier mal mein Makro:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("D4").Value > 0 Then
Range("B4").Select
ActiveCell.FormulaR1C1 = "0"
End If
End Sub
Problem hierbei ist auch noch, dass er zwar die Zeile nullt aber ich sie dann auch nicht mehr ändern kann, sprich er springt jedes mal wieder auf Null.
Ich hoffe Ihr könnt mir helfen.
Danke & Grüße,
Christian
-
Moin Christian,
es geht zwar "eleganter" aber der folgende Code ist so geschnitten, dass du gut darauf aufbauen kannst.
Aber: Was soll geschehen, wenn du in einem 2. Durchlauf in D4 -55 oder "Hugo" eingibst?
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Not Intersect(Target, Cells(4, 4)) Is Nothing Then
If IsNumeric(Target) And Target.Value > 0 Then
For Each c In Range("B4:B16")
c.Value = 0
Next c
Range("B18") = 0
End If
End If
End Sub
-
Hallo Günther,
Super Sache, hat auf Anhieb funktioniert. Nun gab es allerdings noch eine Änderung. Ich habe nun händisch noch etwas nachgetragen, leider funktioniert dies nicht so wie gewünscht. Er gibt nämlich "Fehler beim komilieren: End If ohne If-Block"
als Fehler aus.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Not Intersect(Target, Cells(2, 2)) Is Nothing Then
If IsNumeric(Target) And Target.Value > 0 Then
For Each c In Range("B4:B9")
c.Value = 0
Next c
For Each c In Range("B11:B16")
c.Value = 0
End If
End If
End Sub
Danke vorab und Viele Grüße,
Christian
-
Moin,
in deiner nachträglich eingefügten For-Schleife fehlt das "Next c"!
ption Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Not Intersect(Target, Cells(2, 2)) Is Nothing Then
If IsNumeric(Target) And Target.Value > 0 Then
For Each c In Range("B4:B9")
c.Value = 0
Next c
For Each c In Range("B11:B16")
c.Value = 0
Next c '<- Diese Zeile fehlte
End If
End If
End Sub