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

Titel: IF THEN VBA Makro Frage
Beitrag 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
Titel: Antw: IF THEN VBA Makro Frage
Beitrag von: gmg-cc am September 07, 2017, 20:46:32 Nachmittag
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
Titel: Antw: IF THEN VBA Makro Frage
Beitrag von: Affenfleisch am September 08, 2017, 11:18:30 Vormittag
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
Zitat
"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

Titel: Antw: IF THEN VBA Makro Frage
Beitrag von: gmg-cc am September 08, 2017, 11:23:10 Vormittag
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