Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Select Case bei definierten Namen

Select Case bei definierten Namen
26.02.2015 09:43:03
Propman
Hallo Herber-Gemeinde,
ich habe einigen Bereichen in meinem Tabellenblatt Namen gegeben um nicht absolut auf die jeweilige Zelle ansprechen zu müssen. Das funktioniert überall sehr gut.
Nun habe ich 2 Themen:
1. Funktioniert der Select Case Code auch bei definierten Namen? Mein Code sieht so aus:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Select Case Target.Address                                                               _
_
'Case Select gibt die Möglichkeit Target.Address  _
auf mehrere Zellen anzuwenden
Case Is = Range("CloseAnsprechpartner").Rows Or Range("CloseZahlplan").Rows        _
_
'Hier stehen die Zellen auf die es angewandt wird
Range("Projektbeschreibung").Rows.Hidden = True                              _
_
'Blende die Projektbeschreibung aus
Range("Zahlplan").Rows.Hidden = True                                         _
_
'Blende den Zahlplan aus
Range("Ansprechpartner").Rows.Hidden = True                                  _
_
'Blende die Ansprechpartner aus
Case Else
End Select
Application.ScreenUpdating = True
End Sub
Solange ich für Case is = N8, N37 verwendet habe, hat es wunderbar funktioniert.
Wer hat Rat?
Kurz zur Info, das Sub macht, dass wenn ich auf den eine dieser mehreren Ranges klicke, andere Zeilen ausgeblendet werden.
2. Frage:
In dem folgenden Code lasse ich ebenfalls Zellen aus- und einblenden nach Klick auf ein Steuerelement:
Sub Zahlplan()
Application.ScreenUpdating = False
Dim EndeMS As Integer 'Die Variable "EinblendenMS" deklarieren um nur definierte Meilensteine einzublenden
Dim EndeMON As Integer 'Die Variable "EinblendenMON" deklarieren um nur definierte Monate einzublenden
EndeMS = Range("$E$10").Value 'Der Variable wird der Wert aus der Zelle E10 zugewiesen
EndeMON = Range("$E$37").Value 'Der Variable wird der Wert aus der Zelle E37 zugewiesen
If Range("Abrechnungsmethode").Value = "Meilensteine" Then 'Wenn D7 = "Meilensteine", dann...
Rows("10:" & EndeMS).Hidden = Not Rows("10:" & EndeMS).Hidden 'Einblenden der genutzten Meilensteine (erg. aus Dropdown N10)
Range("VerMonate").Hidden = True 'Ausblenden der monatlichen Verrechnung
Range("Projektbeschreibung").Rows.Hidden = True 'Ausblenden der Projektbeschreibung
Range("Ansprechpartner").Rows.Hidden = True 'Ausblenden der Ansprechpartner
-------------------
End Sub
Ich würde gerne in dieser Zeile: Rows("10:" & EndeMS).Hidden = Not Rows("10:" & EndeMS).Hidden ebenfalls hier die statische "10" durch einen Namen ersetzen, den ich der Zeile 10 gegeben habe. Irgendwie stelle ich mich da etwas blöd an, denn Rows("Name:" & EndeMS).Hidden funktioniert ja nicht.
Danke sehr wie immer!
LG Propman

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select Case bei definierten Namen
26.02.2015 10:01:10
Rudi
Hallo,
als Ansatz:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case True
Case Not Intersect(Target, [CloseAnsprechpartner]) Is Nothing, _
Not Intersect(Target, [CloseZahlplan]) Is Nothing
MsgBox "OK"
End Select
End Sub

AW: Select Case bei definierten Namen
26.02.2015 10:45:03
Propman
Herzlichen Dank, funktioniert grundlegend, leider aber auf allen Zellen und nicht nur auf denen mit dem Namen "CloseXXX" :)
Idee?
Liebe Grüße
Propman

AW: Select Case bei definierten Namen
26.02.2015 10:55:34
EtoPHG
Hallo Propman,
Zitat:... leider aber auf allen Zellen und nicht nur auf denen mit dem Namen "CloseXXX"
Stimmt nicht! Die Msgbox "OK" erscheint nur wenn der Target-Bereich und einer oder beide der genannten Bereiche einen gemeinsamen Bereich (Schnittmenge) haben!
Hast du eine Idee, warum du solche Behauptungen in die Gegend stellst?
Gruess Hansueli

Anzeige
AW: Select Case bei definierten Namen
26.02.2015 10:40:19
EtoPHG
Hallo Propman,
Für einen Excel-Profi würfelst du hier ziemlich viel Begriffe durcheinander.
1. Select Case funktioniert so wie es in der Hilfe beschrieben wird. Was das zu prüfende Kriterium ist, entscheidest allein du, bzw. dein Code.
2. Namen sind definierte Bereiche (Ranges). Sie können als solches mit dem Range-Objekt in VBA angesprochen werden.
3. Das Target-Objekt ist wie im Sub-(Parameter)dimensioniert eine Range. Die .Address Eigenschaft/Methode liefert immer einen Bereichsbezug (Zelladressen) zurück, aber nie einen Namen (String). Auch hier hilft die Hilfe!
4. Mit der Intersect-Methode kannst du prüfen, ob 2 Bereich (z.B. Range("Name"), Target einen Überschneidungsbereich haben, bzw. ob eine/mehrere Zellen 'selektiert' wurden. Dabei zweifle ich, ob du den richtigen Event (Selection_Change) gewählt hast und nicht vielmehr prüfen solltest ob eine Veränderung (_Change) von Werten in den Namensbereichen stattgefunden hat.
5. Eine Range kann auf 2 Arten in VBA verwendet werden: Typ1: Range("Adresse, Adressbereich oder Name") oder Typ2: Range(Cells(Zeile,Spalte),Cells(Zeile/Spalte))
6. Die EntireRow-Eigenschaft einer Range ist der Rows(Zahl)-Eigenschaft vorzuziehen.
Gruess Hansueli

Anzeige
AW: Select Case bei definierten Namen
26.02.2015 10:48:04
Propman
Hallo Hansueli,
die Excel Profi Auswahl bezieht sich auf normale Formeln mit denen ich glücklicherweise so ziemlich alles bauen kann was ich selbst brauche. Ich beharre aber nicht auf dem Profi Status :D
Danke schon mal für die Hilfe und die Hinweise. Ich schau mir das gleich in Ruhe an und hoffe die richtigen Schlüsse daraus ziehen zu können.
LG Propman

AW: Select Case bei definierten Namen
26.02.2015 10:52:35
Propman
Hey Rudi,
Frage 1 hat sich erledigt. Funktioniert jetzt tadellos, hatte ausversehen 2x NOT stehen.
Für Tipps zu Frage 2 bin ich auch dankbar :D
LG Propman

AW: Select Case bei definierten Namen
26.02.2015 11:16:29
EtoPHG
Hallo,
Nochmal (Annahme: Name der Zeile 10: "propman"):-(
    Range(Range("propman"), Cells(EndeMS, 1)).EntireRow.Hidden = _
Not Range(Range("propman"), Cells(EndeMS, 1)).EntireRow.Hidden

Gruess Hansueli

Anzeige
AW: Select Case bei definierten Namen
26.02.2015 11:26:06
Propman
Hallo Hansueli,
funktioniert! Besten besten Dank für die schnelle Hilfe. Nur zur Info: Ich habe genau 5 Tage VBA Erfahrung und das Forum hier ist wirklich gespickt mit sehr hilfsbereiten Leuten, das ist echt klasse!
BG
Propman

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige