Anzeige
Archiv - Navigation
1868to1872
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

Tabstrip mehrere Textboxen

Tabstrip mehrere Textboxen
16.02.2022 21:39:55
Tahir
Hallo Herbernators,
bin neu hier im Forum, aber schon dutzende mal hier im Forum unterwegs gewesen.
Nun hab ich selber ein Problem, was ich nicht gelöst bekomme. Ich hab die Excel mal hochgeladen an der ich gerade arbeite:
https://www.herber.de/bbs/user/151182.xls
Folgendes habe ich vor. Ich hab in einer Tabstrips 4 Textboxen und einer Listbox. Mit einen Button füge ich einen neuen Tab hinzu, um andere Infomationen in die selben Textboxen zu schreiben.
Jetzt ist das ja so, dass bei den Tabstrips, bei einem Tabwechel, die Inhalte immer die selben bleiben. Ich hab ein anderes Makro gefunden, dass die Inhalte der einzelnen Tabs in ein Array speichert und ich somit ganz viele Tabs erzeugen kann, um deren Inhalt dann weiterverarbeiten zu können.
Jetzt ist das Problem, dass das was ich gefunden habe, nur für eine Textbox funktioniert und nicht für mehrere und einer Listbox.
Ich hab die unterschiedlichsten Sachen ausprobiert und keine Lösung gefunden, jeweils die Inhalter eines Tabs bzw. aller Tabs jeweils seperat in einem Array zu speichern.
Hätte jemand zufällig einen Ansatz, wie ich ein Array für alle 4 Textboxen und der Listbox erstellen kann, so dass ich die Daten aus dem Array für den folgeschritt bearbeiten kann.
Das ist das was ich hab:
l

  • Option Explicit
    Dim old_tab As Long
    Dim textValues As Variant
    
    Private Sub CommandButton1_Click()
    TabStrip1.Tabs.Add , "Tab " & TabStrip1.Tabs.Count + 1
    Call reset
    End Sub
    
    
    Private Sub TabStrip1_Change()
    textValues(old_tab) = TextBox1.Value 'Saves the old value
    TextBox1.Text = textValues(TabStrip1.Value) 'Updates value to reflect tab change
    old_tab = TabStrip1.Value 'updates tab # variable
    End Sub
    
    
    Private Sub reset()
    ReDim textValues(0 To TabStrip1.Tabs.Count - 1) 'tabs are zero-based, so count is always one more than the maximum tab value
    old_tab = TabStrip1.Value 'Ensures that the first value will be saved to correct location at the tab change
    End Sub
    

  • Vielen Dank schon mal im Voraus
    Tahir

    10
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Tabstrip mehrere Textboxen
    16.02.2022 22:54:40
    ralf_b
    
    Private Sub TabStrip1_Change()
    textValues(0, old_tab) = TextBox1.Value 'Saves the old value
    textValues(1, old_tab) = TextBox2.Value
    textValues(2, old_tab) = TextBox3.Value
    textValues(3, old_tab) = TextBox4.Value
    TextBox1.Text = textValues(0, TabStrip1.Value) 'Updates value to reflect tab change
    TextBox2.Text = textValues(1, TabStrip1.Value)
    TextBox3.Text = textValues(2, TabStrip1.Value)
    TextBox4.Text = textValues(3, TabStrip1.Value)
    old_tab = TabStrip1.Value 'updates tab # variable
    End Sub
    Private Sub reset()
    ReDim textValues(0 To 3, 0 To TabStrip1.Tabs.Count - 1) 'tabs are zero-based, so count is always one more than the maximum tab value
    old_tab = TabStrip1.Value 'Ensures that the first value will be saved to correct location at the tab change
    End Sub
    

    Anzeige
    AW: Tabstrip mehrere Textboxen
    16.02.2022 23:15:02
    Tahir
    Vielen Dank ralf_b,
    hat mir schon sehr geholfen. Leider wird nach jedem neuen Tab der Array resetet. Wie kann ich das resetten des Arrays verhindern?
    Durch die Redim- Anweisung konnte ich bisher verhindern, dass mir ein Laufzeitfehler auftritt.
    Ursprünglich war die Redim Anweisung im Initialize drin.
    So:
    
    Private Sub UserForm_Initialize()
    ReDim textValues(0 To 3, 0 To TabStrip1.Tabs.Count - 1) 'tabs are zero-based, so count is always one more than the maximum tab value
    old_tab = TabStrip1.Value 'Ensures that the first value will be saved to correct location at the tab change
    End Sub
    
    Hast du da eine Lösung?
    Anzeige
    AW: Tabstrip mehrere Textboxen
    16.02.2022 23:28:11
    ralf_b
    ReDim preserve textValues(0 To 3, 0 To TabStrip1.Tabs.Count - 1)
    AW: Tabstrip mehrere Textboxen
    17.02.2022 08:48:46
    Tahir
    Leider spuckt VBA eine Fehlermeldung aus.
    Mit "UserForm_Initialize" kommt der Laufzeitfehler 13 - Typen unverträglich
    und zwar hier:
    --> ReDim Preserve textValues(0 To 3, 0 To TabStrip1.Tabs.Count)
    das ist mein aktueller Code:
    Option Explicit
    Dim old_tab As Long
    Dim textValues As Variant
    
    Private Sub CommandButton1_Click()
    TabStrip1.Tabs.Add , "Tab " & TabStrip1.Tabs.Count + 1
    End Sub
    
    
    Private Sub TabStrip1_Change()
    textValues(0, old_tab) = TextBox1.Value 'Saves the old value
    textValues(1, old_tab) = TextBox2.Value
    textValues(2, old_tab) = TextBox3.Value
    textValues(3, old_tab) = TextBox4.Value
    TextBox1.Text = textValues(0, TabStrip1.Value) 'Updates value to reflect tab change
    TextBox2.Text = textValues(1, TabStrip1.Value)
    TextBox3.Text = textValues(2, TabStrip1.Value)
    TextBox4.Text = textValues(3, TabStrip1.Value)
    old_tab = TabStrip1.Value 'updates tab # variable
    End Sub
    

    
    Private Sub UserForm_Initialize()
    ReDim Preserve textValues(0 To 3, 0 To TabStrip1.Tabs.Count)  'tabs are zero-based, so count is always one more than the maximum tab value
    old_tab = TabStrip1.Value 'Ensures that the first value will be saved to correct location at the tab change
    End Sub
    

    Anzeige
    AW: Tabstrip mehrere Textboxen
    17.02.2022 09:09:06
    Tahir
    Ich hab mal ein einen zweiten Tab schon mal vorab in den Register getan. Sobald ich dann das Makro starte und den Tabwechsele, kommt auch ein Laufzeitfehler und das gleich zu Begin.
    Private Sub TabStrip1_Change()
    textValues(0, old_tab) = TextBox1.Value ' hier kommt Laufzeitfeher 13
    textValues(1, old_tab) = TextBox2.Value
    textValues(2, old_tab) = TextBox3.Value
    textValues(3, old_tab) = TextBox4.Value
    Bei dem hier "textValues(0, old_tab)" sagt mir Excel schon Typen unverträglich, wenn ich mit dem Mauszeiger rübergehe.
    Hat jemand eine Idee, wo der Fehler ist?
    Anzeige
    AW: Tabstrip mehrere Textboxen
    17.02.2022 09:26:55
    Nepumuk
    Hallo Erol,
    teste mal:
    
    Option Explicit
    Dim old_tab As Long
    Dim textValues() As Variant
    Private Sub CommandButton1_Click()
    TabStrip1.Tabs.Add , "Tab " & TabStrip1.Tabs.Count + 1
    Call reset
    End Sub
    Private Sub TabStrip1_Change()
    textValues(0, old_tab) = TextBox1.Value 'Saves the old value
    textValues(1, old_tab) = TextBox2.Value
    textValues(2, old_tab) = TextBox3.Value
    textValues(3, old_tab) = TextBox4.Value
    textValues(4, old_tab) = ListBox1.ListIndex
    TextBox1.Text = textValues(0, TabStrip1.Value) 'Updates value to reflect tab change
    TextBox2.Text = textValues(1, TabStrip1.Value)
    TextBox3.Text = textValues(2, TabStrip1.Value)
    TextBox4.Text = textValues(3, TabStrip1.Value)
    ListBox1.ListIndex = IIf(IsEmpty(textValues(4, TabStrip1.Value)), -1, textValues(4, TabStrip1.Value))
    old_tab = TabStrip1.Value 'updates tab # variable
    End Sub
    Private Sub reset()
    ReDim Preserve textValues(0 To 4, 0 To TabStrip1.Tabs.Count - 1) 'tabs are zero-based, so count is always one more than the maximum tab value
    old_tab = TabStrip1.Value 'Ensures that the first value will be saved to correct location at the tab change
    End Sub
    
    Gruß
    Nepumuk
    Anzeige
    AW: Tabstrip mehrere Textboxen
    17.02.2022 09:39:33
    Tahir
    Vielen Dank Nepumuk,
    hat alles funktioniert.
    Danke euch für die Hilfe.
    Nur für mich zur verständniss, der Fehler lag also am "Dim textValues() As Variant", dass ich eine Klammern gesetzt habe?
    Gruß
    Tahir
    AW: Tabstrip mehrere Textboxen
    17.02.2022 09:51:06
    Nepumuk
    Hallo Tahir,
    ja genau. ReDim ohne Preserve dimensioniert die Variable neu, mit Preserve wird die Variable erweitert, und wenn die von Haus aus keine Array ist kommt es zu diesem Fehler.
    Gruß
    Nepumuk
    AW: Tabstrip mehrere Textboxen
    18.02.2022 07:29:10
    Tahir
    Ich bins noch mal.
    Der Code hat bisher super bei den Textboxen funktioniert.
    Leider scheitere ich gerade an der Listbox.
    In meiner Listbox tauchen mehrere Punkte die ich mit Multiselect auswähle.
    Ich wähle immer welche aus und die die ich auswähle, sollen mit in den Array gespeichert und auch beim Tabwechsel erhalten bleiben.
    Jetzt hab ich paar Ansätze probiert, aber alle ins leere gelaufen.
    Hätte jemand dafür eine Lösung für, wie ich das mit in den Code integrieren könnte?
    Danke schon mal im Voraus
    Gruß
    Tahir
    Anzeige
    AW: Tabstrip mehrere Textboxen
    18.02.2022 07:52:57
    Nepumuk
    Hallo Tahir,
    teste mal:
    
    Private Sub TabStrip1_Change()
    Dim lngIndex As Long
    Dim strTemp As String
    Dim avntTemp As Variant
    textValues(0, old_tab) = TextBox1.Value 'Saves the old value
    textValues(1, old_tab) = TextBox2.Value
    textValues(2, old_tab) = TextBox3.Value
    textValues(3, old_tab) = TextBox4.Value
    With ListBox1
    For lngIndex = 0 To .ListCount - 1
    If .Selected(lngIndex) Then strTemp = strTemp & "," & CStr(lngIndex)
    Next
    End With
    textValues(4, old_tab) = IIf(strTemp = vbNullString, Empty, Mid$(strTemp, 2))
    TextBox1.Text = textValues(0, TabStrip1.Value) 'Updates value to reflect tab change
    TextBox2.Text = textValues(1, TabStrip1.Value)
    TextBox3.Text = textValues(2, TabStrip1.Value)
    TextBox4.Text = textValues(3, TabStrip1.Value)
    With ListBox1
    For lngIndex = 0 To .ListCount - 1
    .Selected(lngIndex) = False
    Next
    If Not IsEmpty(textValues(4, TabStrip1.Value)) Then
    If InStr(1, textValues(4, TabStrip1.Value), ",") = 0 Then
    .Selected(CLng(textValues(4, TabStrip1.Value))) = True
    Else
    avntTemp = Split(textValues(4, TabStrip1.Value), ",")
    For lngIndex = LBound(avntTemp) To UBound(avntTemp)
    .Selected(CLng(avntTemp(lngIndex))) = True
    Next
    End If
    End If
    End With
    old_tab = TabStrip1.Value 'updates tab # variable
    End Sub
    
    Gruß
    Nepumuk
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige