Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
452to456
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
452to456
452to456
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

MultiPages

MultiPages
11.07.2004 23:38:48
sigi
Hallo Spezialisten,
ich habe eine MultiPage in der Userform1 erstellt
Jede Page hat eine Listbox welche jeweils Daten eines Tabellenblattes einliest.
Nun mein Problem:
Wie kann ich die Listboxes selectieren.
In meinem Beispiel werden immer die Daten von Tabelle1 angezeigt.
Bei Doppelclick wird in den einzelnen Text oder ComboBoxen jedoch die
richtigen Daten ausgegeben.
Wie muß ich hier verfahren?
Danke für die Hilfe
Nachfolgend die Anweisungen für die Listboxes.

Option Explicit

Private Sub UserForm_Initialize()
On Error Resume Next
Dim A_Datum As Date
Dim A_BV As Variant
Dim A_von As Variant
Dim A_bis As Variant
Dim A_Bewölkung As Variant
Dim A_Niederschlag As Variant
Dim A_Wind As Variant
Dim A_Temp As Variant
Dim A_Luft As Variant
Dim A_Zeit As Variant
Dim B_Datum As Date
Dim B_BV As Variant
Dim B_FA As Variant
Dim B_Eigen As Variant
Dim B_P1 As Variant
Dim B_B1 As Variant
Dim B_P2 As Variant
Dim B_B2 As Variant
Dim B_P3 As Variant
Dim B_B3 As Variant
Dim B_P4 As Variant
Dim B_B4 As Variant
Dim I As Variant
Dim sAdr As Variant
Dim Arr() As Variant
Dim iRowL As Integer, iRow As Integer, iCol As Integer, iRowU As Integer
UserForm1.ListBox1.Clear
iRowL = Sheets("1").Cells(Rows.Count, 1).End(xlUp).Row
For iRow = 2 To iRowL
If Not IsEmpty(Sheets("1").Cells(iRow, 1)) Then
ReDim Preserve Arr(0 To 6, 0 To iRowU)
Arr(0, iRowU) = Sheets("1").Cells(iRow, 1)
Arr(1, iRowU) = Sheets("1").Cells(iRow, 2)
Arr(2, iRowU) = Sheets("1").Cells(iRow, 3)
Arr(2, iRowU) = FormatDateTime(Arr(2, iRowU), vbShortTime)
Arr(3, iRowU) = Sheets("1").Cells(iRow, 4)
Arr(3, iRowU) = FormatDateTime(Arr(3, iRowU), vbShortTime)
iRowU = iRowU + 1
End If
Next iRow
UserForm1.ListBox1.Column = Arr
UserForm1.ListBox1.ListIndex = iRow - 3
UserForm1.ListBox1.Selected(UserForm1.ListBox1.ListIndex) = False
'Firmen
UserForm1.ListBox2.Clear
iRowL = Sheets("2").Cells(Rows.Count, 1).End(xlUp).Row
For iRow = 2 To iRowL
If Not IsEmpty(Sheets("2").Cells(iRow, 1)) Then
ReDim Preserve Arr(0 To 6, 0 To iRowU)
Arr(0, iRowU) = Sheets("2").Cells(iRow, 1)
Arr(1, iRowU) = Sheets("2").Cells(iRow, 2)
Arr(2, iRowU) = Sheets("2").Cells(iRow, 3)
'Arr(3, iRowU) = Sheets("2").Cells(iRow, 4)
iRowU = iRowU + 1
End If
Next iRow
UserForm1.ListBox2.Column = Arr
UserForm1.ListBox2.ListIndex = iRow - 3
UserForm1.ListBox2.Selected(UserForm1.ListBox2.ListIndex) = False
UserForm1.CommandButton6.Enabled = False
UserForm1.TextBox3.Visible = False
UserForm1.TextBox5.Value = "Bitte wählen Sie ein Datum aus..."
' Tagesdaten

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
Dim A_Datum As Date
Dim A_BV As Variant
Dim A_von As Variant
Dim A_bis As Variant
Dim A_Bewölkung As Variant
Dim A_Niederschlag As Variant
Dim A_Wind As Variant
Dim A_Temp As Variant
Dim A_Luft As Variant
Dim A_Zeit As Variant
Dim I As Integer
Dim Nummer As Integer
Nummer = UserForm1.ListBox1.ListIndex
Nummer = Nummer + 2
A_von = FormatDateTime(A_von, vbShortTime)
A_bis = FormatDateTime(A_bis, vbShortTime)
A_Zeit = FormatDateTime(A_Zeit, vbShortTime)
UserForm1.TextBox1.Visible = True
UserForm1.TextBox1.Value = "Änderungsmodus"
A_Datum = Sheets("1").Cells(Nummer, 1)
A_BV = Sheets("1").Cells(Nummer, 2)
A_von = Sheets("1").Cells(Nummer, 3)
A_bis = Sheets("1").Cells(Nummer, 4)
A_Bewölkung = Sheets("1").Cells(Nummer, 5)
A_Niederschlag = Sheets("1").Cells(Nummer, 6)
A_Wind = Sheets("1").Cells(Nummer, 7)
A_Temp = Sheets("1").Cells(Nummer, 8)
A_Luft = Sheets("1").Cells(Nummer, 9)
A_Zeit = Sheets("1").Cells(Nummer, 10)
UserForm1.CommandButton3.Enabled = True
A_von = FormatDateTime(A_von, vbShortTime)
A_bis = FormatDateTime(A_bis, vbShortTime)
A_Zeit = FormatDateTime(A_Zeit, vbShortTime)
UserForm1.ComboBox1.Value = A_Datum
UserForm1.ComboBox2.Value = A_BV
UserForm1.ComboBox3.Value = A_von
UserForm1.ComboBox4.Value = A_bis
UserForm1.ComboBox5.Value = A_Bewölkung
UserForm1.ComboBox6.Value = A_Niederschlag
UserForm1.ComboBox7.Value = A_Wind
UserForm1.ComboBox8.Value = A_Temp
UserForm1.ComboBox9.Value = A_Luft
UserForm1.ComboBox10.Value = A_Zeit
End Sub

'*********************************************************************************************************************
' Firmendaten
'*********************************************************************************************************************

Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
Dim B_Datum As Date
Dim B_BV As Variant
Dim B_FA As Variant
Dim B_Eigen As Variant
Dim B_P1 As Variant
Dim B_B1 As Variant
Dim B_P2 As Variant
Dim B_B2 As Variant
Dim B_P3 As Variant
Dim B_B3 As Variant
Dim B_P4 As Variant
Dim B_B4 As Variant
Dim I As Integer
Dim Nummer As Integer
Nummer = UserForm1.ListBox2.ListIndex
Nummer = Nummer + 2
UserForm1.TextBox3.Visible = True
UserForm1.TextBox3.Value = "Änderungsmodus"
UserForm1.CommandButton3.Enabled = True
B_Datum = Sheets("2").Cells(Nummer, 1)
B_BV = Sheets("2").Cells(Nummer, 2)
B_Eigen = Sheets("2").Cells(Nummer, 3)
B_FA = Sheets("2").Cells(Nummer, 4)
B_P1 = Sheets("2").Cells(Nummer, 5)
B_B1 = Sheets("2").Cells(Nummer, 6)
B_P2 = Sheets("2").Cells(Nummer, 7)
B_B2 = Sheets("2").Cells(Nummer, 8)
B_P3 = Sheets("2").Cells(Nummer, 9)
B_B3 = Sheets("2").Cells(Nummer, 10)
B_P4 = Sheets("2").Cells(Nummer, 11)
B_B4 = Sheets("2").Cells(Nummer, 12)
ComboBox11.Value = B_Datum
ComboBox12.Value = B_BV
ComboBox13.Value = B_FA
TextBox4.Value = B_Eigen
ComboBox14.Value = B_P1
ComboBox15.Value = B_B1
ComboBox16.Value = B_P2
ComboBox17.Value = B_B2
ComboBox18.Value = B_P3
ComboBox19.Value = B_B3
ComboBox20.Value = B_P4
ComboBox21.Value = B_B4
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MultiPages
12.07.2004 07:35:15
andre
Hallo Sigi,
stimmt VBA nein - wer hat Dir denn den Code gebastelt?
Wenn Du oben das On Error Resume Next auskommentierst findest Du wahrscheinlich den Fehler oder schreib mal, wo der code dann hängenbleibt. Dass DeinArray in der 1. Dimension bis 6 geht ist gewollt? In Deinem Code geht's nur bis Arr(3, ...
Noch'n Tip:
Das mit As Variant brauchst Du nicht dazuschreiben, ohne was ist eine Variable immer Variant. Dann kannst Du auch ein paar Zeilen zusammenziehen. Für die Übersichtlichkeit kannst Du einen Kommentar nutzen, z.B. 'Variant-Variablen
Hallo Andre
12.07.2004 08:51:28
Sigi
Hallo Andre,
danke für Deine Antwort, leider hilft mir diese nicht weiter.
Folgendes Problem:
Dies Listboxen in Page1 bis Page8 sollen die jeweiligen Tabellenblätter aufrufen.
In jeder Page sind Text und Comboboxen für EIngaben, welche im TAB1 - ( abgelegt und danach in dem Page1- 8 wieder gegeben werden sollen. Mit doppelclick Listbox werden dann die einzelnen Text oder ComboBoxen gefüllt.
Mein Problem, in einzelnen Userformen mit der Listbox funktioniert dies sehr gut, nur in einer MultiPage nicht, dann werden immer nur die Inhalte der Page1 angezeigt. Bei Doppelclick z.B. Page 2 wird in der Listbox2 die Inhalte von Tab1 angezeigt, bei doppelclick wird jedoch das Ergebnis von Tab2 in den einzelnen Text- ComboBoxen (was ja richtig wäre) angezeit.
Gruß Sigi
Anzeige
AW: Hallo Andre
12.07.2004 09:15:14
andre
Hallo Sigi
das mit dem on error ... hast Du gemacht?
Mit dem Rowsource klappt es 100%:

Private Sub UserForm_Initialize()
Me.ListBox1.RowSource = "Tabelle1!a1:a2"
Me.ListBox2.RowSource = "Tabelle1!b1:b2"
End Sub

Daher glaube ich immer noch, dass ein anderer Fehler drinsteckt der mit dem On Errror einfach übergangen wird...
Grüße, Andre
AW: Hallo Andre
12.07.2004 09:28:40
Sigi
Hallo Andre,
leider bin ich in VBA sehr schlecht, muß es aber trotzem versuchen.
Meine Codes habe ich aus verschiedenen Büchern.
Könnte ich Dir meine Arbeitsmappe zumailen?
Dann siehst Du warscheinlich mein Problem.
Mit nachfolgendem Code umgehe ich dieses Problem
UserForm1.ListBox1.List = Sheets("1").Range("A2:E5001").Value oder
UserForm1.ListBox2.List = Sheets("2").Range("A2:E5001").Value
jedoch mit der Einschränkung, dass die Listbox schwer zu kontrollieren ist, d.h. dass ich dann immer bis zur letzten Zeile in der Listbox scrollen kann, bzw. der letzte Eintrag schwer zu finden ist.
Danke für Deine Hilfe!
Gruß
Sigi
Anzeige
AW: Hallo Andre
12.07.2004 10:49:54
andre
Halo Sigi,
wenn es nicht zu geheim ist dann lade die Mappe hier hoch. Ansonsten findest Du mich in den Profilen - der "kleine" andre oben in der Liste.
Grüße, Andre

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige