Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Worksheet_SelectionChange

Worksheet_SelectionChange
05.11.2007 19:57:00
Sonnenpeter
Hallo,
ich habe folgenden Makrocode mit hinweisen aus den Archiv zusammengebastelt.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$B$5" Then
Worksheets("Tabelle1").Shapes("Listenfeld1").Visible = True
Else
Worksheets("Tabelle1").Shapes("Listenfeld1").Visible = False
End If
Was muss ich tun wenn der Bereich "$B$5:$B$49" das Listenfeld zeigen soll?
Muss ich eigentlich den Tabellennamen angeben? Problem wird er geändert funzt das ganze ja nicht mehr.
Kann ich ohne Arbeitsmappenschutz das abändern des Tabellennamens verhindern?
Gruß Sonnenpeter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_SelectionChange
05.11.2007 20:31:26
Erich
Hallo Sonnenpeter,
kannst du die Listbox mit "Listenfeld1" ansprechen? Bei mir ging das nicht - auch mit Excel 10 (XP).
Versuch mal

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("$B$5:$B$49")) Is Nothing Then
Me.Shapes("List Box 1").Visible = False
Else
Me.Shapes("List Box 1").Visible = True
End If
End Sub

Me kannst du verwenden, weil der Code ja zu diesem Tabellenblatt gehört.
"List Box 1" heißt meine Listbox aus der Formular-Symbolleiste.
Wenn du die Steuerelement-Listbox verwendest, ist der Name wohl "ListBox1".
Ohne Schutz das Umbenennen von Blättern zu verhindern, geht sicher auch, ist aber wohl umständlich.
Aber mit dem "Me" ist es vielleicht auch gar nicht mehr nötig?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Worksheet_SelectionChange
05.11.2007 20:46:12
Daniel
Hi
zur ersten Frage:


IF  Intersect(Target, Range("$B$5:$B$49")) is nothing then
Worksheets("Tabelle1").Shapes("Listenfeld1").Visible = False
else
Worksheets("Tabelle1").Shapes("Listenfeld1").Visible = True
end if 


oder kürzer:


Worksheets("Tabelle1").Shapes("Listenfeld1").Visible = Not Intersect(Target, Range("$B$5:$B$49")) is nothing


zur 2. Frage
wenn ich dein Makro richttig verstehe, dann wird das Listenfeld in eine anderen Tabellenblatt ein/ausgeblendet ?
Wenn das so ist, und der Benutzer den Namen des Tabellenblatts ändern kann, dann könntest du das Sheet auch über seine Objektbezeichnung ansprechen (das ist was anderes als der Name von der Registerkarte).
die Objektbezeichnung steht in der Baumstruktur des Objekt-Explores VOR der Klammer, der Name von der Registerkarte IN der Klammer.
in der Eigensschaftsliste ist das lustigerweise umgekehrt, da findest du die Objektbezeichnung unter der ersten Eigenschaft "(Name)", den Registerkartennamen dagegen unter der Eigenschaft "Name".
Wichtig ist, die Objektbezeichnung kann nur über den VBA-Edtior geändert werden und nicht vom Anwender in Excel und ist daher für deinen Wunsch die geeignete Lösung.
Das ganze sieht dann so aus:


Tabelle1.Shapes("Listenfeld1").Visible = False


Gruß, Daniel


Anzeige
AW: Worksheet_SelectionChange
05.11.2007 20:47:34
Gerd
Hallo Sonnenpeter,
probier mal. Eventuell sind deine Fragen damit erledigt.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.ListBox1.Visible = Not Intersect(Target, Range("$B$5:$B$49")) Is Nothing
MsgBox Me.Name
End Sub


Gruß Gerd

Danke an @all
05.11.2007 21:26:00
Sonnenpeter
Hallo und recht herzlichen Dank an alle drei Antworter :-)
alle Varianten sind durchgetest und funktionieren, ich bin Happy!
@ Gerd: Deinen Vorschlag musste ich leicht verändern, wie nachstehend aufgeführt.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Shapes("Listenfeld1").Visible = Not Intersect(Target, Range("$B$5:$B$49")) Is Nothing
'MsgBox Me.Name
End Sub


Die Verwendung von ME macht den Tabbelblattnamen nicht erforderlich und ist deshalb mein klarer Favorit.
Und ich dacht, ME funktioniert nur bei einer Userform.
Es ist immer wieder schön wenn geholfen wird.
Gruß Sonnenpeter

Anzeige
AW: Forms/Steuerelemente
05.11.2007 22:09:12
Gerd
Hallo Sonnenpeter,
mit diesen Dingern ist es so.
Man kann sie ins Tabellenblatt aus "Formular" oder aus der Steuerelemente-Toolbox holen.
Und sie dann "je nach dem" per Code ansprechen.
Hilfreich wäre bei Fragen zu diesen Sub-Objekten, anzugeben, womit/woraus sie eingefügt
worden sind.
Ich hatte daher "gewürfelt" und nebebei mal wieder nicht nochmal vor'm Schreiben "F5" gedrückt :-)
Gruß Gerd

AW: Forms/Steuerelemente
06.11.2007 19:34:47
Sonnenpeter
Hallo Gerd,
Ok, dass nächste mal gebe ich "womit/woraus sie eingefügt" an.
Gruß Sonnenpeter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige