Collapse column

Autor Thema: IF THEN VBA Makro Frage  (Gelesen 807 mal)

Offline Affenfleisch

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2016
IF THEN VBA Makro Frage
« 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
« Letzte Änderung: September 07, 2017, 17:42:43 Nachmittag von Affenfleisch »

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.321
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw: IF THEN VBA Makro Frage
« Antwort #1 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
Gruß
Günther

Offline Affenfleisch

  • Newbie
  • *
  • Beiträge: 2
    • Profil anzeigen
  • Office-KnowHow: Experte
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2016
Antw: IF THEN VBA Makro Frage
« Antwort #2 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


Offline gmg-cc

  • Hero Member
  • *****
  • Beiträge: 1.321
    • Profil anzeigen
    • Meine Webseite
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Gut
  • Version [Office] : Office 2016
Antw: IF THEN VBA Makro Frage
« Antwort #3 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
Gruß
Günther

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.