Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

3 aufeinander aufbauende Abfragen

Forumthread: 3 aufeinander aufbauende Abfragen

3 aufeinander aufbauende Abfragen
01.03.2023 08:44:28
Toni
Hallo zusammen,
ich habe in einem Arbeitsblatt mehrere Abfragen (ja/nein/leer) hintereinander.
3 dieser Fragen bauen aufeinander auf. Gebe ich in Frage 1 "ja" ein, blendet sich Frage 2 ein usw.
Das stellt erstmal kein Problem dar.
Ich möchte aber, den Inhalt der Frage 2 und 3 löschen, wenn Frage 1 mit "nein" oder "" beantwortet wird.
Wenn nur Frage 2 "nein" enthält, dann logischerweise nur Frage 3 leeren.
Anbei mein derzeitiger Code.
Die Löschfunktion habe ich zwar eingeben, führt jedesmal zum Fehler und/oder Absturz.
Ich habe alle im VBA eingebundenen Zellen mit einem neuen Namen versehen (z.B. drop16.2). Das erleichtert so einiges.
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("drop16.2").Value = "ja" Then
Rows("9:14").Hidden = False
Rows("18:19").Hidden = False
 If Range("drop16.3").Value = "ja" Then
 Rows("15:17").Hidden = True
 Rows("20:24").Hidden = False
  If Range("drop16.4").Value = "ja" Then
  Rows("25:27").Hidden = False
  Else
  Rows("25:27").Hidden = True
  End If
  
 ElseIf Range("drop16.3").Value = "nein" Then
 Rows("15:17").Hidden = False
 Rows("20:27").Hidden = True
 'Sheets("16").Range("drop16.4").ClearContents oder 'Sheets("16").Range("drop16.4").Value = ""
 
 ElseIf Range("drop16.3").Value = "" Then
 Rows("15:17").Hidden = True
 Rows("20:27").Hidden = True
 'Sheets("16").Range("drop16.4").ClearContents oder 'Sheets("16").Range("drop16.4").Value = ""
 End If
 
ElseIf Range("drop16.2").Value = "nein" Or Range("drop16.2").Value = "" Then
Rows("9:27").Hidden = True
 'Sheets("16").Range("drop16.3").ClearContents oder 'Sheets("16").Range("drop16.3").Value = ""
End If
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 3 aufeinander aufbauende Abfragen
01.03.2023 09:48:48
UweD
Hallo
durch das löschen wird das change Event sofort erneut ausgelöst und du läufts in eine Schleife.
- Also kurz vorher die Events aus- und danach wider einschalten.
- damit die Events in einem möglichen Fehler auf jeden Fall wieder eingeschaltet werden, noch die Fehlerbehandlung entsprechend mit einbauen.
Versuch es mal so
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Const APPNAME = "Worksheet_Change"
    If Range("drop16.2").Value = "ja" Then
        Rows("9:14").Hidden = False
        Rows("18:19").Hidden = False
        
        If Range("drop16.3").Value = "ja" Then
            Rows("15:17").Hidden = True
            Rows("20:24").Hidden = False
            
            If Range("drop16.4").Value = "ja" Then
                Rows("25:27").Hidden = False
            Else
                Rows("25:27").Hidden = True
            End If
          
        ElseIf Range("drop16.3").Value = "nein" Then
            Rows("15:17").Hidden = False
            Rows("20:27").Hidden = True
            Application.EnableEvents = False
            Sheets("16").Range("drop16.4").ClearContents
            Application.EnableEvents = True
         
        ElseIf Range("drop16.3").Value = "" Then
            Rows("15:17").Hidden = True
            Rows("20:27").Hidden = True
            Application.EnableEvents = False
            Sheets("16").Range("drop16.4").ClearContents
            Application.EnableEvents = True
        End If
         
    ElseIf Range("drop16.2").Value = "nein" Or Range("drop16.2").Value = "" Then
        Rows("9:27").Hidden = True
        Application.EnableEvents = False
        Sheets("16").Range("drop16.3").ClearContents
        Application.EnableEvents = True
    End If
    
    '*** Fehlerbehandlung
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number > 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
        & "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD
Anzeige
AW: 3 aufeinander aufbauende Abfragen
01.03.2023 13:56:59
Toni
Hallo UweD,
vielen Dank für deine schnelle Hilfe.
Das klappt super, vielen Dank.
Danke für die Rückmeldung (owT)
01.03.2023 13:58:57
UweD
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige