Zwei Makros verbinden - Fehleranzeige
#1
Hallo zusammen,

ich würde gerne bei unterschiedlichen Kombinationen von Eingabefeldern verschiedene Zeilen ausblenden. Hierfür brauche ich mehrere If-Makros, die einzeln auch funktionieren, jedoch darf ich diese ja nicht gleich benennen, sodass ich alles unter einem Namen verbinden muss. Nun habe ich folgendes:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$K$19" Or Target.Address = "$K$30" Then _
Rows("42:87").Hidden = Range("K19").Value = "nein" And Range("K30").Value = "nein"

End If


If Target.Address = "$K$19" Or Target.Address = "$K$30" Or Target.Address = "$K$35" Or Target.Address = "$K$49" Or Target.Address = "$K$57" Then _
Rows("61:87").Hidden = Range("K19").Value = "nein" And Range("K30").Value = "nein" And Range("K35").Value = "unkritisch" And Range("K349").Value = "ja" And Range("K57").Value = "nein"

End If

End Sub


Nun kommt jedoch der Fehler "End IF ohne IF-Block". Kann mir jemand weiterhelfen?

VG, Susi
Top
#2
Hallo Susi,

in den beiden IF's sprichst Du die gleichen Zellen an.

Im ersten IF     If Target.Address = "$K$19" Or Target.Address = "$K$30" Then _ ...

Im zweiten IF   If Target.Address = "$K$19" Or Target.Address = "$K$30" ...

Meiner bescheidenen Meinung nach kann das so nicht funktionieren und Excel ist da ja wohl
der gleichen Meinung, weil es nicht erkennen kann, welches der IF's denn nun gelten soll.

Ich würde  Select Case  einsetzen.
Top
#3
Auch Hallo,

da du durch das Zeilenfortsetzungszeichen ( _) eine einzeilige If-Konstruktion hast, kannst Du auf das End If jeweils verzichten.
Gruß Stefan
Win 10 / Office 2016
Top
#4
Hallo Stefan,

hmmm, ... was ich natürlich wieder mal vornehm überlesen habe  :22:
Top
#5
Hallo ihr beiden,

Danke für die Tipps. Ich habe selbst ein paar Fehler gefunden. Meine Idee ist es, dass durch verschiedenen Antwortkombinationen immer unterschiedliche Zeilen ausgeblendet werden. Dabei spreche ich die gleichen Zellen an ja, aber mit einer unterschiedlichen Antwort. Ist das also nicht möglich?

Wie müsste ich denn mit SELECT CASE vorgehen??

Wenn ich es wie folgt eingebe, reagiert das VBA nur bei der unteren Kombination, die obere mit zweimal nein wird dabei übergangen....

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$K$19" Or Target.Address = "$K$30" Then
        Rows("42:87").Hidden = Range("K19").Value = "nein" And Range("K30").Value = "nein"
   
End If
 
If Target.Address = "$K$19" Or Target.Address = "$K$30" Or Target.Address = "$K$35" Or Target.Address = "$K$49" Or Target.Address = "$K$57" Then
        Rows("61:87").Hidden = Range("K19").Value = "ja" And Range("K30").Value = "nein" And Range("K35").Value = "unkritisch" And Range("K49").Value = "ja" And Range("K57").Value = "nein"
   
End If


End Sub

Danke!

Viele Grüße,Susi
Top
#6
Hallöchen,

nimm einfach die beiden Ranges und die Taget.Address in die Überwachung und schaue, was da drin ist Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#7
allo,

und das sollte logisch nicht funktionieren?

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$K$19" Or Target.Address = "$K$30" Then
        Rows("42:87").Hidden
        Range("K19").Value = "nein"
        Range("K30").Value = "nein"

 ElseIf Target.Address = "$K$19" Or Target.Address = "$K$30" Or Target.Address = "$K$35" Or Target.Address = "$K$49" Or Target.Address = "$K$57" Then
        Rows("61:87").Hidden
        Range("K19").Value = "ja" 
        Range("K30").Value = "nein" 
        Range("K35").Value = "unkritisch"
        Range("K49").Value = "ja"
        Range("K57").Value = "nein"

End If

End Sub




Eine sinnvole Struktur sollte der VBA-Code schon haben
96 
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Top
#8
Hallo Günter,

ich denke, da werden mehrere Bedingungen abgefragt um auszublenden und keine Werte eingetragen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Hallo Susi,

dieser Vergleich

Code:
Range("K19").Value = "nein" And Range("K30").Value = "nein"

ist nur erfüllt, wenn in K19 und K30 nein steht. Und nur dann werden die Zeilen ausgeblendet.
Gruß Stefan
Win 10 / Office 2016
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste