VBA - Excel Tabellenblätter Ein- und Ausblenden

Hallo

Ich versuche im Moment ein Problem mit meinem VBA Auswerteprogramm zu lösen.

Und zwar befindet sich auf dem ersten Tabellenblatt in Range(„Q50“) ein Drop-Downmenü, welches über die Datenprüfung eingefügt wurde.

In diesem Drop down Menü gibt es folgende Möglichkeiten zur Auswahl:

„“ (leer)
Ja
Nein

Im Change-Ereignis soll nun eine entsprechende Abfrage erfolgen:

If Sheets(„Datenblatt“).Range(„Q50“) = „Ja“ Then
Sheets(„Umkehrspanne“).Visible = True
Else
Sheets(„Umkehrspanne“).Visible = False
End If

Das Programm erkennt zwar, das in der Celle „Ja“ oder „Nein“ steht, springt nach der If-Funktion direkt auf das Else und blendet das Blatt immer nur aus. und nicht ein.

Ich hoffe hier Hilfe zu finden.

Danke
Flochen

Hallo Flochen,
ich habe im Moment leider keine Zeit, um mich genau um Dein Problem zu kümmern.

Aber hier ein neuer Ansatz.
Ruf das Selection_change Ereignis des Blattes ab.

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
With Target
If .Column = 1 And .Row = 1 Then
Select Case Cells(1, 1)
Case „ja“
Sheets(„xxxxxx“).Visible = True
Case Else
Sheets(„xxxxxxxx“).Visible = False
End Select
End If
End With
End Sub
oder,
statt des Dropdown-Menüs setze zwei Button „Ja“ und „Nein“ auf das Blatt.

Gruß
Heinz Günther

Grüezi Flochen

Ich kann mir da eigentlich nur vorstellen, dass vielleicht ein Leerzeichen mit rein spielt

Prüfe mal was da im DropDown wirklich in die Zelle geschrieben wird.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

tut mir leid, kann nicht helfen
Gruß
Brandis

Hallo Flochen,

wenn Sie …Range(„Q10“).Text=„Ja“

schreiben, funktioniert es. Auch Groß- und Kleinschreibung muss übereinstimmen mit der Schreibweie im DropDown.

Tschüß
Jürgen

Hallo Herr Ries,

da kann ich leider keinen Tipp geben, da das Macro bei mir funktioniert. Benutze WIN7 Pro und MS-Office2003.

Gruß Hugo

Hallo Flochen
Ich tippe auf den Value Fehler.

Ändere:
If Sheets(„Datenblatt“).Range(„Q50“) = „Ja“ Then
Mit:
If Sheets(„Datenblatt“).Range(„Q50“).Value = „Ja“ Then

Grüsse Sebastian

Hallo Florian
Dein Makro funtioniert korrekt, habe es getestet. Was für eine Art Drop Down Menü verwendest du?

Hallo

Hallo Florian,

Ich versuche im Moment ein Problem mit meinem VBA
Auswerteprogramm zu lösen.

Und zwar befindet sich auf dem ersten Tabellenblatt in
Range(„Q50“) ein Drop-Downmenü, welches über die Datenprüfung
eingefügt wurde.

Keine Ahnung, ob ein Drop-Down die Vorgehensweise beeinflusst.

In diesem Drop down Menü gibt es folgende Möglichkeiten zur
Auswahl:

„“ (leer)
Ja
Nein

Im Change-Ereignis soll nun eine entsprechende Abfrage
erfolgen:

Habe selbst erst kürzlich mit Ergeignissen hantiert, bislang mit wenig Erfolg.

If Sheets(„Datenblatt“).Range(„Q50“) = „Ja“ Then
Sheets(„Umkehrspanne“).Visible = True
Else
Sheets(„Umkehrspanne“).Visible = False
End If

Wenn ich richtig verstehe gilt eigentlich immer (2 von 3 Fällen) .Visible = False, und nur bei „Ja“ gilt .Visible = True.
Also könntest Du in Dein Ereignis oder (siehe unten) eine Subroutine immer .Visble = False wählen und Dein If auf = „Ja“ beschränken.

Das Programm erkennt zwar, das in der Celle „Ja“ oder „Nein“
steht, springt nach der If-Funktion direkt auf das Else und
blendet das Blatt immer nur aus. und nicht ein.

Soweit ich das bisher gelesen habe, wird so eine Änderung immer über
If Target.Address = „$Q$50“ Then SubRoutineName
abgefragt.
Also Worksheet_Change eine Routine aufrufen lassen.

Ich hoffe hier Hilfe zu finden.

Bin mir fast sicher, dass das noch nicht die fertige Lösung ist, aber vielleicht war der Hinweis hilfreich.
Wenn Du 'ne Lösung hast, wäre ich ganz Ohr.

Danke
Flochen

MfG MwieMichel

ändere mal den teil in:

wahl=Sheets(„Datenblatt“).Range(„Q50“).value
msgbox(wahl)
If wahl = „Ja“ Then
Sheets(„Umkehrspanne“).Visible = True
Else
Sheets(„Umkehrspanne“).Visible = False
End If

und schau dir an welche werte „wahl“ annimmt, es scheint wohl nicht leer ja nein sonder eher eine Zahl zu sein. Ansonsten wird nach groß und kleinschrift unterschieden…

Gruß
Chris

Tut mir leid. Mit VBA kenne ich mich zu wenig aus. VG, Mertel

Hallo

Woher weißt Du, daß das Programm „Ja“ erkennt, wenn immer nur der else-Zweig, also „nicht-Ja“ ausgeführt wird? Ich würde mal die „Ja“-Abfrage umkehren, mit blanks vor und hinter dem ja sowie mit Groß-/Kleinschreibung experimentieren, um zu sehen, was dann passiert.

Gruß
Wolfram

Hallo,

hast Du mal geprüft, ob wirklich „Ja“ in Q50 steht und nicht „JA“ (also Großschrift) oder mit einem Leerzeichen („Ja " bzw. " Ja“)?

Ist Deine Zelle Q50 ggf. als Text formatiert?

Vielleicht greift er mit dem Vergleich .Range(„Q50“) = „Ja“ auch direkt auf das Objekt „ZelleQ50“ zu und dies ist natürlich keine Zeichenkette. Versuche:
If Sheets(„Datenblatt“).Range(„Q50“).VALUE = „Ja“ Then …

Sorry, kann nicht helfen. Gruss, e-a-s-y

sorry hier kann ich Dir nicht helfen