Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1360to1364
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

Nochmals allgemeine Frage zu Userforms

Nochmals allgemeine Frage zu Userforms
24.05.2014 22:36:25
Christian
Hallo Forum,
das Thema Userforms ist ja unerschöpflich, zumindest für mich.
Zu diesem Thema hab ich folgende, eher allgemeine Frage:
In der Datei wird eine UF1 aufgerufen, nach Auswahl in der Listbox der UF1 wird eine weitere UF aufgerufen, UF2, und mit Werten aus UF1 gefüllt. Klappt tadellos.
Jetzt würde ich je nach Auswahl in UF2 noch eine weitere UF aufrufen, UF3. Dies soll wiederum mit Werten aus UF2 gefüllt werden.
Auf was sollte man achten, um mögliche Fehler zu vermeiden?
Muss man die beiden UF im Hintergrund geladen haben, oder gibt es da einen anderen Weg um die Daten aus den UF zwischezuspeichern?
Danke für die Aufklärung!
MfG Christian

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

Betreff
Datum
Anwender
Anzeige
AW: Nochmals allgemeine Frage zu Userforms
25.05.2014 00:22:00
Ewald
Hallo Christian,
du kannst auch mehrere Userform öffnen, wenn in den Eigenschaften "ShowModal" auf False gesetzt ist.
Nur warum du für eine Listbox eine eigene Userform brauchst ist mir nicht klar
Gruß Ewald

weitere Frage....
25.05.2014 01:01:20
Christian
Hallo Ewald,
Danke für die Antwort.
Zu Deiner Frage:
Es geht um eine Kalkulationsmappe
In der ersten UF wird in einer Listbox ein mehrspaltiger Bereich vom Tabellenblatt1 eingelesen (Positionen und Text und Menge).
Zu diesem einzelnen Positionen von Tabellenblatt1 sind in Tabellenblatt2 mehrere verschiedene Werte hinterlegt (Material und Zeit).
In der erten UF kann ich dann eine Position auswählen, dann öffnet sich eine zweite UF mit den dazugehörigen Daten für diese Position. In dieser UF kann ich dann die einzelnen Daten für Material und Zeit einsehen und nach Bedarf bearbeiten.
Da es aber für das Material nochmals eine hinterlegte Liste gibt, rufe ich zum ändern dieser Werte die dritte UF auf, um die Materialwerte ändern bzw. hinzufügen zu können.
Das alle klappt eigentlich recht gut.
Jetzt habe ich aber noch eine Frage:
Wie kann ich aus einem Variablen Bereich in einer Spalte die erste freie Zeile ausgeben lassen?
Bei folgendem Code gibts immer Probleme:
Die Matrix wird zwar erkannt, aber wenn zB die Zeile 23 leer ist, gibt er Zeile 23 aus, wenn Zeile 29 frei ist, aber Zeile 22 belegt, gibt er 28 aus, verstehe ich noch nicht!
Was muss man da ändern?
Set Dim anfmatarray As Long
Dim endmatarray As Long
Dim lastrowmat As Long
Dim MatrixPosnr As Range
Dim suchposnr As String
MatrixPosnr = Sheets("Kalkulation").Range("L1:L25000")
suchposnr = Me.ListBox1.List(0, 1)
anfmatarray = Application.Match(suchposnr, MatrixPosnr, 0) + 2
endmatarray = anfmatarray + 13
lastrowmat = wksKalk.Range("N" & anfmatarray & ":N" & endmatarray).End(xlDown).Row 
Danke für die Unterstützung!
MfG Christian

Anzeige
AW: weitere Frage....
25.05.2014 10:50:06
Ewald
Hallo Christian,
die erste freie Zelle in der Tabelle hat nichts mit der Länge deines Arrays zu tun, hast du leere Zeilen dazwischen kommt es zu diesem Fehler
Die erste freie Zeile wäre
lastrowmat = wksKalk.Cells(Rows.Count, 14).End(xlUp).Row + 1
Gruß Ewald

AW: weitere Frage....
25.05.2014 13:46:12
Christian
Hallo Ewald,
Danke für die Anrwort, hilft mir leider nicht weiter, da ich gerne die erste freie Zeile nur für diesen Bereich ermitteln will.
Die Einträge für den bestimmten Bereich lass ich in eine Listbox einlesen:
With ListBox2
.Clear
suchmat = Me.ListBox1.List(0, 1)
zeilemat = Application.Match(suchmat, MatrixMat, 0) + 2
For imat = zeilemat To zeilemat + 14
If wksKalk.Cells(imat, 14)  "" Then
.AddItem wksKalk.Cells(imat, 14)
.List(ListBox2.ListCount - 1, 1) = wksKalk.Cells(imat, 15)
.List(ListBox2.ListCount - 1, 2) = wksKalk.Cells(imat, 16).Text
.List(ListBox2.ListCount - 1, 3) = wksKalk.Cells(imat, 17).Text
.List(ListBox2.ListCount - 1, 4) = wksKalk.Cells(imat, 18)
.List(ListBox2.ListCount - 1, 5) = wksKalk.Cells(imat, 19).Text
.List(ListBox2.ListCount - 1, 6) = wksKalk.Cells(imat, 20).Text
.List(ListBox2.ListCount - 1, 7) = wksKalk.Cells(imat, 21).Text
.List(ListBox2.ListCount - 1, 8) = wksKalk.Cells(imat, 22).Text
.List(ListBox2.ListCount - 1, 9) = wksKalk.Cells(imat, 23).Text
End If
Next
End With

Jetzt suche ich nach einer Möglichkeit, in diesem Bereich( Spalte 14) die ertse leere Zelle zu finden, und wenn nicht mehr frei ist, dann eine Meldung!
Die Meldung wenn nichts mehr frei ist, bekomm ich hin, den Rest nicht!! :-(
Das muss doch möglich sein!
MfG Christian

Anzeige
AW: weitere Frage....
25.05.2014 16:23:08
Ewald
Hallo Christian,
dann teste mal so
 efzeile = 0   'erste freie Zeile
For imat = zeilemat To zeilemat + 14
If wksKalk.Cells(imat, 14)  "" Then
.AddItem wksKalk.Cells(imat, 14)
.List(ListBox2.ListCount - 1, 1) = wksKalk.Cells(imat, 15)
.List(ListBox2.ListCount - 1, 2) = wksKalk.Cells(imat, 16).Text
.List(ListBox2.ListCount - 1, 3) = wksKalk.Cells(imat, 17).Text
.List(ListBox2.ListCount - 1, 4) = wksKalk.Cells(imat, 18)
.List(ListBox2.ListCount - 1, 5) = wksKalk.Cells(imat, 19).Text
.List(ListBox2.ListCount - 1, 6) = wksKalk.Cells(imat, 20).Text
.List(ListBox2.ListCount - 1, 7) = wksKalk.Cells(imat, 21).Text
.List(ListBox2.ListCount - 1, 8) = wksKalk.Cells(imat, 22).Text
.List(ListBox2.ListCount - 1, 9) = wksKalk.Cells(imat, 23).Text
Else
If efzeile = 0 Then efzeile = imat
End If
Next

Gruß Ewald
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige