Seite 2 von 2
Verfasst: Do, 01.12.2005 16:34
von Paule
Ich habe auf dem Tabellenblatt "Ansicht" 2 Listboxen
Die erste bezieht sich auf die Spaltenüberschriften die sich auf die Auswahl davor (über Dialog) bezieht (Deshalb im code T1 und T2),und gibt eine Zahl aus.
Wenn eine Spalte der ersten Box ausgewählt wurde soll die zweite Box die Inhalte der Spalte zeigen. Und die sind ja Variabel. Deshalb das Makro.
Danach soll wenn ein Eintrag ausgewählt wurde die gesamte Zeile ausgegeben werden (nur um den Zweck zu erwähnen...).
grüße Paule
Verfasst: Do, 01.12.2005 17:15
von Toxitom
Hey Paule,
ähmmm, leider noch nicht verstanden.
Also, du hast eine Listbox, die die Zahlen 1-8 drin hat.
Jetzt wählt man eine aus, - diese liefert einen Code (Zahl).
Je nach Zahl soll jetzt in der zweiten Listbox die Inhalte der Spalte aufgeführt werden, deren Nummer der Zahl entspricht.
IN der Spalte können Inhalte in den Zellen stehen, maximal 65565 (wirklich so viel???) , wobei diese jedoch nicht kontinuierlich gefüllt sind. Leere Zellen sollen nicht in die Auswahlbox übernommen werden.
Soweit richtig?
Du hast 8 mögliche Spalten? kannst du die benennen? (als A-H oder so?) und wirklich so viele mögliche Einträge? Da geht die Performance ganz schön in die Knie....
Und was war mit dem T1 und T2? Das habe ich nicht verstanden...
Gruss
Thomas
Verfasst: Fr, 02.12.2005 08:18
von Paule
Morgen Thomas,
Also, du hast eine Listbox, die die Zahlen 1-8 drin hat.
So ähnlich, die Lisbox hat die Spaltenüberschriften drin und gibt die Zahlen 1-8 auf "Ansicht"(Tabelle3), in Zelle B3 aus.
IN der Spalte können Inhalte in den Zellen stehen, maximal 65565 (wirklich so viel???) , wobei diese jedoch nicht kontinuierlich gefüllt sind. Leere Zellen sollen nicht in die Auswahlbox übernommen werden.
Soweit richtig?
Ja richtig, aber die Zellen sind durchgehend gefüllt, also ohne Leerzellen, deswegen sind die 65535 Zeilen auch egal da das Makro bei der ersten leeren Zeile abbricht.
Du hast 8 mögliche Spalten? kannst du die benennen? (als A-H oder so?)
FO bis FV
Und was war mit dem T1 und T2?

T1 = Tabelle1, T2 = Tabelle2
Gruß
Paule
Verfasst: Fr, 02.12.2005 08:56
von Toxitom
Morgen Paule,
ok, es kommt noch ein bischen mehr Licht ins Dunkle. Noch ein paar Nachfragen:
Listbox 1 auf Tabelle "Ansicht" enhält Spaltenüberschriften (oder was auch immer). Dort wählt man nun einen speziellen Eintrag, dann soll Listbox 2 die entsprechenden Einträge der zugeordneten Spalte FO bis FV - identifiziert durch die zurückgegebene Nummer - enthalten?
Wozu speicherst du die Nummer in der Zelle B3 ? Brauchst du sie sonst noch irgendwie?
Üblicherweise würdest du doch ein Makro starten in Kombination des Ereignisses "modifiziert" der ersten Listbox. Dann kannst du doch direkt die Auswahl erhalten - wozu zwischenspeichern?
OK, der Code ist nicht so kompliziert, bin aber erst Samstag wieder online. Also bitte bis dahin gedulden.
Gib mir bitte noch den Code für deine T1List - nur der Vollständigkeitshalber.
Gruss
Thomas
Verfasst: Fr, 02.12.2005 09:07
von Paule
Listbox 1 auf Tabelle "Ansicht" enhält Spaltenüberschriften (oder was auch immer). Dort wählt man nun einen speziellen Eintrag, dann soll Listbox 2 die entsprechenden Einträge der zugeordneten Spalte FO bis FV - identifiziert durch die zurückgegebene Nummer - enthalten?
Jep.
Wozu speicherst du die Nummer in der Zelle B3 ? Brauchst du sie sonst noch irgendwie?
Ja ein Paar Formeln beziehen sich darauf.
Gib mir bitte noch den Code für deine T1List - nur der Vollständigkeitshalber.
der einzige unterschied zu T2List ist nur das überall wo T2 steht T1 ins Makro muss, die tabellen haben die gleiche Struktur.
Viele grüße
Paule
Verfasst: Sa, 03.12.2005 11:37
von Toxitom
Hey Paule,
so, hier nun das komplette Makro (oder besser die beiden). Das alles sollte ausreichen
Code: Alles auswählen
dim oDoc as object 'global definiert
REM dies Makro aufrufen!
Sub Liste2Start
dim sTab as string, iSpalte as integer
oDoc = thisComponent
osheet = oDoc.sheets.getByName("Ansicht")
sTab = oSheet.getCellByPosition(17,0).string
REM ich gehe davon aus, dass in Zelle(1,2) die Zahl als
REM String (Text) steht!
iSpalte = CInt(oSheet.getCellByPosition(1,2).string)
Liste2Fuellen(sTab, iSpalte) 'Aufruf des nächsten Makros
End Sub
sub Liste2fuellen(sTab as String, iSpalte as integer)
Dim oListBox2 as Object, oForm as Object
oForm = oDoc.sheets.getbyname("Ansicht").Drawpage.Forms(0)
oListBox2 = oForm.getByName("ListBox2")
REM Spaltenarray erzeugen
aSp = array( ,"FO", "FP", "FQ", "FR", "FS", "FT", "FU", "FV")
REM Tabellenblatt auswählen
oSheet2 = oDoc.sheets.getByName(sTab)
for i = 3 to 65535
oZelle = oSheet2.getCellRangeByName(aSp(iSpalte) & i)
if oZelle.getType() then
sListe = sListe & ";" & oZelle.string 'wenn Zelle nicht leer
else
exit for 'wenn Zelle leer
end if
next
sListe = right(sListe, len(sListe)-1) 'den führenden Trenner löschen
aListe2 = split(sListe, ";") 'Umwandlung in Array
oListbox2.stringItemList = aListe2() 'eintragen in Liste
end sub
Gruss
Thomas
Verfasst: Sa, 03.12.2005 13:08
von Paule
Wow, klappt schnell und sauber!
Brauch wohl noch ein bischen den Code Vollständig zu vertehen..Aber übung macht den Meister
Vielen Dank
Paule