Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel vba Listbox mit Daten auf allen Blättern
#1
Hallo zusammen,

ich knabbere wieder mal an einem Thema bei dem ich nicht so recht weiterkomme. Vielleicht könnt Ihr mir wieder mal helfen.

In einer Arbeitsmappe mit 20 Blättern wird auf dem Blatt "Contents" in eine TextBox alle restlichen Namen der Blätter eingelesen. Die Textbox ist direkt auf dem Tabellenblatt und nicht in einer Userform. Mit Klick auf einen Blattnamen in der Textbox wird das entsprechende Blatt angezeigt.

Meine Idee ist nun, dass diese Textbox mit ihrem bereits eingelesenem Inhalt auch wieder auf diesem Blatt angezeigt wird. Und das immer wenn ein neu anzuzeigendes Blatt gewählt wird.
Die Textbox sollte sozusagen immer mitwandern und auf dem aktuellen Blatt angezeigt werden. Quasi ein mitwanderndes Inhaltsverzeichnis.

Geht das überhaupt? Wenn ja wie könnte man dies vba-technisch realisieren?

Freu mich auf einen Vorschlag.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#2
Hallo,

warum kein UserForm?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
Hi

Welchen Vorteil versprichst du dir davon?
Ein Rechtsklick auf die Pfeile unten links für die Blattnavigation ist doch viel einfacher.

Gruß Elex
Antworten Top
#4
Klaus-Dieter,

Textbox kann natürlich auch in einer Userform sein.

Hätte kein Problem damit, Hauptsache es würde so funktionieren wie ich mir das vorgestellt habe.

Macht man das nicht...nur Textbox auf Tabellenblatt?

Hallo Elex,

Dein Vorschlag würde auch gehen.

Die Datei wird, bitte nicht falsch verstehen, nicht nur von Excelkennern verwendet.
Die Handhabung soll einfach durch plakative Darstellung vereinfacht werden und sie wäre meines Erachtens auch schneller.
Ist meine persönliche Meinung die nicht repräsentativ ist.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#5
Hallo,

habe dir eine Beispieldatei erstellt.


Angehängte Dateien
.xlsm   Blattauswahl über Textbox.xlsm (Größe: 16,56 KB / Downloads: 6)
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • sharky51
Antworten Top
#6
Hallo Klaus-Dieter,

cool ... genau so habe ich mir das vorgestellt, genial.

Wenn ich dazu noch ne Frage habe würde ich mich gerne nochmals melden.

Herzlichen Dank!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#7
Hallo,

immer gerne.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • sharky51
Antworten Top
#8
Hallo zusammen,

darf ich Euch nochmals zu dem Thema um Hilfe bitten?

In meinem Workbook sind viele Tabellen enthalten deren Namen dann in eine Listbox eingelesen werden.
Einige Tabellen will ich aber in der Listbox nicht sehen, quasi ausblenden.

Mit den folgenden Code ist das so gelöst:

Code:
Sub ListBox_Einlesen()
  'ListBox mit Tabellenblätter füllen
  Dim wks As Worksheet
  Tabelle1.lstWks.Clear
  For Each wks In Worksheets
      If wks.Name <> "Contents" And wks.Name <> "Muster" _
        And wks.Name <> "next" And wks.Name <> "Info" Then
        Tabelle1.lstWks.AddItem wks.Name
      End If
  Next wks
End Sub

Wenn jetzt mehrere neue Blätter hinzukommen und davon auch einige nicht in der Listbox angezeigt werden sollen, muss ich jedes Mal den Source-Code bearbeiten. Das ist lästig und nicht Benutzerfreundlich!
Meine Idee ist jetzt auf dem Tabellenblatt, wo die Listbox eingeblendet ist, in einem benannten Bereich z.B. "GoToEnd", die Tabellennamen einzutragen die ich nicht in der Listbox sehen möchte.

Also: Die Tabellenblattnamen Contents, Muster, next, Info usw. werden im Zell-Bereich "GoToEnd" aufgelistet und sollen dann beim Befüllen der Listbox nicht berücksichtigt werden.
So könnte man(n) schnell die Arbeitsmappe Konfigurieren.

Wie müsste der code dahingehend geändert werden?

Ein Lösungsvorschlag wäre schön!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#9
Hallo Erich,

dann machst du das so:

Code:
Private Sub UserForm_Initialize()
    Dim intAnz As Integer
    Dim varBlattName As Variant
    varBlattName = Array("Testblatt1", "Testblatt2")
    For intAnz = 0 To UBound(varBlattName)
        With ListBox1
            .AddItem varBlattName(intAnz)
        End With
    Next intAnz
End Sub

Anstelle von Testblatt1 und Testblatt2 trägst du deine Blattnamen in das Array ein. Dann werden alle anderen Blätter nicht gelistet.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • sharky51
Antworten Top
#10
Hallo Erich,

teste mal so:
Private Sub UserForm_Initialize()
Dim oWs As Worksheet
Dim varAusschluss As Variant
varAusschluss = Range("GoToEnd").Value
For Each oWs In Worksheets
If IsError(Application.Match(oWs.Name, varAusschluss, 0)) Then
ListBox1.AddItem oWs.Name
End If
Next oWs
End Sub
Gruß Uwe

Hi Klaus,

Dein Vorschlag ließe sich so zusammenfassen: Wink
Private Sub UserForm_Initialize()
ListBox1.List = Array("Testblatt1", "Testblatt2")
End Sub
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • sharky51
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste