tropus
Goto Top

Excel 2007 Zeile ausblenden wenn zwei Werte in Zelle gleich

Hallo, ich suche schon seit Tagen nach einer Lösung in Excel eine Zelle auszublenden wenn zwei Spalten einen bestimmten Wert angezeigt wird.

Ich habe folgenden Code, der sich jedoch nur auf eine Spalte bezieht.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 And 11 Then
    If Cells(Target.Row, 10 And 11) = "OK" Then  
        Rows(Target.Row).EntireRow.Hidden = True
    End If
End If
End Sub
Ich möchte aber eine Zeile ausblenden, wenn in der Spalte 10+11 "OK" (oder in ähnlichen Schreibweisen, wie: ok+OK, etc.) steht.

Ferner soll danach msgbox für 3 sec. einen text anzeigen, und dann wieder verschwinden -ohne das es einer Bestätigung bedarf.
Den entsprechenden variablen Wert soll sich die box aus der Spalte 2, der auszublendenden Zeile (z.B. B14) holen.

Kann mir jemand helfen, ich bin auch für Teilantworten dankbar.

Viele Grüße (aus Brasilien)

Ralf

Content-Key: 152488

Url: https://administrator.de/contentid/152488

Printed on: April 23, 2024 at 13:04 o'clock

Mitglied: 76109
76109 Oct 06, 2010 at 16:18:10 (UTC)
Goto Top
Hallo Ralf!

Versuchs mal damit:
Option Explicit
Option Compare Text

Const Wartezeit = 3 'Wartezeit in Sekunden  

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Column = 10 Or .Column = 11 Then
            If Cells(.Row, 10) Like "OK" And Cells(.Row, 11) Like "OK" Then  
                Rows(.Row).EntireRow.Hidden = True
                CreateObject("WScript.Shell").Popup Cells(.Row, 2), Wartezeit, "Hinweis...", vbInformation  
            End If
        End If
    End With
End Sub
Wobei es in Excel selbst keine Möglichkeit gibt eine Meldung automatisch schließen zu lassen. Von daher eine PopUp-Meldung über WSH-SHELLface-wink

Als Anzeigetext, wird der Wert aus Spalte B (2) genommen.

Der Like-Operator in Verbindung mit "Option Compare Text" unterscheidet im Gegensatz zum Operator "=" NICHT zwischen Klein/Großschreibung.

Grüße aus Germany

Dieter
Member: tropus
tropus Oct 06, 2010 at 17:29:05 (UTC)
Goto Top
Hallo Hajo,

danke der Code klappt besser als meiner, leider noch nicht ganz perfekt.
Die Zeilen werden ausgeblendet, aber nur bei OK, OK in Großbuchstaben.
Das Hinweisfenster ist noch zu klein, außerdem soll es noch folgenden Text enthalten: Die Gruppe ...(Wert aus Spalte 2, der auszublendenden Zeile) wurde erfolgreich geschlossen.

Ich bastele weiter, aber vielleicht bist Du ja schneller als ich.

Viele Grüße

Ralf
Mitglied: 76109
76109 Oct 06, 2010 at 17:48:54 (UTC)
Goto Top
Hallo Ralf!

Zitat von @tropus:
danke der Code klappt besser als meiner, leider noch nicht ganz perfekt.
Die Zeilen werden ausgeblendet, aber nur bei OK, OK in Großbuchstaben.
Hast Du den kompletten Quelltext inklusive Codezeile 1 und 2 kopiert?

Das Hinweisfenster ist noch zu klein, außerdem soll es noch folgenden Text enthalten: Die Gruppe ...(Wert aus Spalte 2, der
auszublendenden Zeile) wurde erfolgreich geschlossen.
Option Explicit

Const Wartezeit = 3 'Wartezeit in Sekunden  

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Msg As String
    
    With Target
        If .Column = 10 Or .Column = 11 Then
            If UCase(Cells(.Row, 10)) = "OK" And UCase(Cells(.Row, 11)) = "OK" Then  
                Rows(.Row).EntireRow.Hidden = True
                Msg = "Die Gruppe " & Cells(.Row, 2) & " wurde erfolgreich geschlossen!"  
                CreateObject("WScript.Shell").Popup Msg, Wartezeit, "Hinweis...", vbInformation  
            End If
        End If
    End With
End Sub

Gruß Dieter

[edit] geändert [/edit]
Member: tropus
tropus Oct 06, 2010 at 18:08:42 (UTC)
Goto Top
Wie zum Teufel komme ich denn auf Hajo? - Eindeutig überarbeitet.

Ja Dieter, ich habe den kompletten Code kopiert - würde gerne die Datei anhängen, damit Du das Ding auch vor Augen hast.

Mit dem neuen Code bekomme ich eine Fehlermeldung. "Variable nicht definiert" - dazu wird mir "Msg" (aus Zeile 14) markiert.

Sorry für den Trouble

Ralf
Mitglied: 76109
76109 Oct 06, 2010 at 18:32:53 (UTC)
Goto Top
Hallo Ralf!

Zitat von @tropus:
Wie zum Teufel komme ich denn auf Hajo? - Eindeutig überarbeitet.
Das habe ich mich auch gefragtface-smile
Mit dem neuen Code bekomme ich eine Fehlermeldung. "Variable nicht definiert" - dazu wird mir "Msg" (aus Zeile
14) markiert.
Das kann ich nicht ganz nachvollziehen, muss irgendwie an Deiner Excel-Version liegen.

Letzten Code geändert und hoffe, dass er jetzt funktioniert?

Gruß Dieter
Member: tropus
tropus Oct 06, 2010 at 19:57:12 (UTC)
Goto Top
Hallo Dieter,

wollte Dich nicht im Unklaren lassen - das Problem ist, nicht zuletzt wegen Deiner guten Hilfe, gelöst.

Das Problem war, dass mir der Code etwa folgendermaßen angezeigt wurde:
Option Explicit
Const Wartezeit = 3 'Wartezeit in Sekunden  

Private Sub Worksheet_Change(ByVal Target As Range) ...
Da ich davor bereits einen code hatte, habe ich "Option Explicit" gelöscht und "Const Wartezeit = 3 'Wartezeit in Sekunden" unterhalb von "Private Sub..." gesetzt - jetzt ist alles prima.

Danke noch mal

Viele Grüße

Ralf
Mitglied: 76109
76109 Oct 07, 2010 at 06:59:41 (UTC)
Goto Top
Hallo Ralf!

Zitat von @tropus:
wollte Dich nicht im Unklaren lassen - das Problem ist, nicht zuletzt wegen Deiner guten Hilfe, gelöst.
Sowas in der Art hatte ich mir schon gedachtface-smile
Danke noch mal
Yepp, gern geschehenface-wink

Gruß Dieter