Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabstrip add Tabs

Tabstrip add Tabs
promsn
Hallo,
ich bin am verzweifeln. Ich habe ein TabStrips1 und möchte gerne eine beliebige Anzahl von Tabs hinzufügen. Ja nach Auswahl eines Kunden können es mindestens zwei Tabs sein oder maximal zehn Tabs sein. Die Anzahl bekomme ich schon, nur wie ich jetzt die Tabs anhand der Int icount erhöhe weiß ich nicht. Ich habe zwar eininges gelesen nur leider komme ich jetzt nicht weiter. Das was ich weiß ich das es TabStrips1.Add gibt und leider habe ich keine Ahnung wie man dies nutzt.
Vielleicht kann mir ja einer weiterhelfen.
Anzeige
Werte einer Textbox im TabStrip ändern
18.06.2010 10:59:00
NoNet
Hallo p.,
hier ein kleines Beispiel : Das UserForm enthält ein Tabstrip mit 2 Tabs, darin eine Textbox.
Weiterhin enthält das UserForm einen CommandButton zum Erstellen weiterer Tabs innerhalb des Tabstrips (dies ist nicht unbedingt notwendig, aber etwas ähnliches hast Du ja auch beschrieben).
Beim Wechseln des Tabs (z.B. von Tab1 auf Tab2) soll sich der Wert der Textbox anpassen. Dazu habe ich die Werte zunächst in eine ARRAY-Variable geschrieben.
Private arrWerte 'Globale Variable für das UserForm
Private Sub UserForm_Activate()
'Werte für die Textbox1 im Tabstrip :
arrWerte = Array("Hans", "Martin", "Klaus", "Eva", "Rudi", "Liese", "Claudia")
End Sub
Private Sub TabStrip1_Change()
'Wert der Textbox ändern, sobald ein anderes TAB angeklickt wird :
If TabStrip1.Value  0 And Val(lngTS) 
Hope that helps,
Gruß, NoNet
Anzeige
AW: Werte einer Textbox im TabStrip ändern
18.06.2010 12:06:02
promsn
Hi,
das funktioniert leider nicht. Es werden mehr und mehr Tabs hinzugefügt.
VG
WAS genau funktioniert nicht ? _oT
21.06.2010 11:03:55
NoNet
_oT
AW: Werte einer Textbox im TabStrip ändern
23.06.2010 10:31:02
promsn
Guten Morgen NoNet,
ich verstehe Deinen Code nicht so ganz. Es geht ja Hauptsächlich um diesen hier:

Private Sub TabStrip1_Change()
'Wert der Textbox ändern, sobald ein anderes TAB angeklickt wird :
If TabStrip1.Value 

Mein Code ist ja folgender:
rst.MoveFirst
For iTab = 0 To rst.RecordCount - 1
TabStrip1.Tabs.Add
TabStrip1.Tabs(iTab).Caption = rst!NAME
rst.MoveNext
Next 'iTab

D.h. meine Werte liegen in einem Recordset. Ich habe es also schon geschafft das die Tabs den Namen der Personen haben. Nun habe ich im Editor eine TextBox1 erstellt und in diese soll die Telefonnummer. Wenn ich nun das Programm starte füllt er mit diesem Code den Inhalt:
TextBox1 = rst!Telefonnnummer
Jedoch im zweiten Tab oder dritten (je nach dem wieviele ich habe) steht immer die gleiche Nummer drin. Ich habe keine Ahnung wie ich nun im zweiten, dritten, etc. die richtige Telefonnummer anzeigen lassen kann.
Viele Grüße
promsn
Anzeige
AW: Tabstrip add Tabs
18.06.2010 11:01:31
IngGi
Hallo promsn,
wenn du die gewünschte Anzahl Tabs in der Integervariablen iCount hast:
Dim iCount As Integer
Dim iTab As Integer
If TabStrip1.Tabs.Count 
Gruß Ingolf
AW: Tabstrip add Tabs
18.06.2010 11:37:16
promsn
Hi,
Super genau das habe ich gesucht.
Eine zusätzliche Frage, wie ändere ich den Tab Namen? Ich habe ein Array mit "Wasser" "Bier" "Cola" etc. (kann auch mehr oder weniger sein, je nach Tabs halt).
Anzeige
TIPP: Schau Dir bitte auch meinen Beitrag an ! _oT
18.06.2010 11:38:52
NoNet
_oT = "ohne Text"
AW: Tabstrip add Tabs
18.06.2010 11:54:16
IngGi
Hallo promsn,
hier mal ein Beispiel:

Dim oTab As Object
Dim sGetraenke(1 To 2) As String
Dim iGetraenk As Integer
sGetraenke(1) = "Wasser"
sGetraenke(2) = "Bier"
iGetraenk = 1
For Each oTab In TabStrip1.Tabs
oTab.Caption = sGetraenke(iGetraenk)
iGetraenk = iGetraenk + 1
Next 'oTab
Gruß Ingolf
Anzeige
AW: Tabstrip add Tabs
18.06.2010 12:04:07
promsn
Hi,
das ganze scheint so nicht zu funktionieren. Index ist außerhalb des gültigen Bereiches. Die ganze Namen der Tabs können Dynamisch sein. Also nicht nur "Wasser" sonder auch "H20" oder "Hund"... ich könnte den ganze Duden auflisten, weil hinter jedem Kunden was anderes steckt.
Gruß
AW: Tabstrip add Tabs
18.06.2010 12:13:26
IngGi
Hallo promsn,
prinzipiell funktioniert das so schon. Wo und warum du einen Indexfehler bekommst kann ich ohne Code natürlich nicht beurteilen.
Gruß Ingolf
Anzeige
AW: Tabstrip add Tabs
18.06.2010 12:37:19
promsn
Ich hatte vergessen zu sagen das HUND KATZE MAUS etc aus einer SQL Anweißung kommen welche rst!INFO heißt. Im Prinzip ist der Code nicht mehr als eine SQL Anweisung, welche auch funktioniert, und dein ersten Teil.
VG
AW: Keine Ahnung! Schau auf Wikipedia...
18.06.2010 14:13:18
IngGi
Hallo promsn,
die Ursache für den Indexfehler kann damit zusammenhängen. Mehr lässt sich aufgrund deiner Aussage aber noch nicht sagen.
Gruß Ingolf
Anzeige
Tapstrips füllen
23.06.2010 09:05:27
promsn
Gutuen Morgen,
vielen Dank für die Hilfe. Bin um eininges weiter gekommen. Nun mein nächstes Problem. Wie fülle ich meine Tabs mit Inhalt. Ich habe mehrere Textboxen die mit verschiedenen Recordsets gefüllt werden sollen. Z.b. Tab1 heißt "Müller". Im Tab zwei soll dann stehen Adresse, Telefon etc. Im Tab2 steht "Meier" und andere Werte aber die Textboxen haben die gleiche Bezeichnung (TextBox2 als BSP). Das Ausgeben der Recordsets ist kein Problem. Das funktioniert schon so weit. Nur wenn ich TextBox2 mit rst!TELEFON fülle, steht die Telefonnummer von Herrn Müller über all.
Ich erstelle meine Tabs mit folgendem Code:
rst.MoveFirst
For iTab = 0 To rst.RecordCount - 1
TabStrip1.Tabs.Add
TabStrip1.Tabs(iTab).Caption = rst!NAME
rst.MoveNext
Next 'iTab
Viele Grüße
promsn
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Tabs im TabStrip mit VBA hinzufügen und verwalten


Schritt-für-Schritt-Anleitung

Um mit einem Excel VBA TabStrip eine beliebige Anzahl von Tabs hinzuzufügen, kannst du den folgenden Code verwenden. Dies ermöglicht es dir, basierend auf der Auswahl eines Kunden zwischen zwei und zehn Tabs zu erstellen.

  1. TabStrip hinzufügen: Stelle sicher, dass dein UserForm ein TabStrip (TabStrip1) enthält.

  2. Anzahl der Tabs festlegen: Definiere eine Integer-Variable, um die Anzahl der Tabs zu speichern.

    Dim iCount As Integer
    iCount = 5 ' Beispiel: 5 Tabs
  3. Tabs hinzufügen: Verwende eine Schleife, um die Tabs hinzuzufügen.

    Dim iTab As Integer
    For iTab = 0 To iCount - 1
       TabStrip1.Tabs.Add
       TabStrip1.Tabs(iTab).Caption = "Tab " & (iTab + 1) ' Tab-Namen setzen
    Next iTab
  4. Werte in Textboxen anpassen: Verwende die TabStrip1_Change-Prozedur, um die Werte in Textboxen basierend auf dem ausgewählten Tab zu ändern.

    Private Sub TabStrip1_Change()
       Select Case TabStrip1.Value
           Case 0
               TextBox1.Value = "Wert für Tab 1"
           Case 1
               TextBox1.Value = "Wert für Tab 2"
           ' Weitere Fälle hinzufügen
       End Select
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Index außerhalb des gültigen Bereichs

    • Dieser Fehler tritt auf, wenn du versuchst, auf einen Tab zuzugreifen, der nicht existiert. Überprüfe die Schleife, die die Tabs hinzufügt, und stelle sicher, dass der Index korrekt ist.
  • Fehler: Tabs werden mehrfach hinzugefügt

    • Überprüfe, ob die Schleife, die die Tabs hinzufügt, nicht mehrfach aufgerufen wird. Verwende TabStrip1.Tabs.Clear, bevor du neue Tabs hinzufügst, um vorherige Tabs zu entfernen.

Alternative Methoden

Wenn du HTML Tabs erstellen möchtest, kannst du dies in einer Excel-Umgebung mit ActiveX-Steuerelementen tun. Hierbei kannst du eine ähnliche Logik wie bei dem TabStrip verwenden, jedoch in einem Webbrowser-Steuerelement innerhalb von Excel.


Praktische Beispiele

Hier ist ein Beispiel, wie du die Tabs mit Daten aus einer Datenbank füllen kannst:

Dim rst As Recordset
Set rst = YourDatabase.OpenRecordset("SELECT NAME, TELEFON FROM Kunden")
rst.MoveFirst

For iTab = 0 To rst.RecordCount - 1
    TabStrip1.Tabs.Add
    TabStrip1.Tabs(iTab).Caption = rst!NAME
    TextBox1.Value = rst!TELEFON
    rst.MoveNext
Next iTab

In diesem Beispiel wird für jeden Tab der Name aus dem Recordset verwendet, und die Telefonnummer wird in der Textbox angezeigt.


Tipps für Profis

  • Nutze Arrays, um die Tab-Namen dynamisch zu setzen. Dadurch kannst du Anpassungen vornehmen, ohne den Code zu ändern.

    Dim sGetraenke() As String
    sGetraenke = Split("Wasser,Bier,Cola", ",")
  • Verwende dimitab, um Tab-Indizes zu verwalten, und stelle sicher, dass du die richtige Anzahl und Reihenfolge der Tabs hast.


FAQ: Häufige Fragen

1. Wie viele Tabs kann ich in einem TabStrip haben?
Es gibt keine feste Grenze, jedoch hängt die Anzahl der Tabs von der Benutzeroberfläche und der Lesbarkeit ab. In der Regel sollten es nicht mehr als 10-12 Tabs sein.

2. Kann ich den Tab-Namen während der Laufzeit ändern?
Ja, du kannst den Tab-Namen jederzeit zur Laufzeit ändern, indem du auf die Caption-Eigenschaft des Tabs zugreifst.

3. Wie kann ich sicherstellen, dass die richtigen Daten in den Textboxen angezeigt werden?
Verwende die TabStrip1_Change-Prozedur, um die Werte der Textboxen entsprechend dem aktiven Tab zu aktualisieren. Achte darauf, dass du die richtigen Indizes verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige