Kombinationsfeld in verbindung mit einer Liste

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

mike6
*****
Beiträge: 479
Registriert: Sa, 06.03.2004 13:58

Kombinationsfeld in verbindung mit einer Liste

Beitrag von mike6 »

Hallo,

ich habe eine Oo.org 1.1.2 (Calc) Tabelle mit 2 Blättern.

Auf dem Tabellenblatt 1 ist u.a. ein Kombinationsfeld.
Auf dem Tabellenblatt 2 ist eine Liste mit Ersatzteilen:

Wischergummi
Reifen
Heckscheibe usw.

Die Daten stehen alle untereinander. Nun möchte ich, das
ich im Kombinationsfeld auf dem Tabellenblatt 1 durch einfaches
anklicken einen Wert aus dem Tabellenblatt 2 übernehmen kann.

Mein Versuch die Daten aus dem Tabellenblatt 2 in die
Eigenschaften vom Kombinationsfeld unter Listen-Einträge einzutippen,
war zwar erfolgreich. Wenn ich aber das Kombinationsfeld in eine
andere Tabelle übernehmen möchte, werden die zuvor mühevoll
eingetippten Daten gelöscht.

MfG
mike6
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Du müstest die Listeneinträge dynamisch in das Kombinationsfeld laden, hier ist ein Beispiel:

Code: Alles auswählen

Sub Load_Values_List()
Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim oComboBox As Object
Dim oCellRangeSource As Object
Dim aSourceDataArray()
Dim aDataArrayRow()
Dim aSource() As String
Dim I As Integer

	Set oDoc = ThisComponent
	'das Tabellenblatt wo das Kombinationsfeld ist
	Set oSheet = oDoc.Sheets.GetByName("Demo_En")
	Set oForm = oSheet.DrawPage.Forms.GetByName("Standard")
	'das Kombinationsfeld	
	Set oComboBox = oform.getByName("ComboBox1")
	'die einzutragenen Werte (hier stehen sie auf dem selben
	'Tabellenblatt, aber das muß nicht sein
	Set oCellRangeSource = oSheet.getCellRangeByName("B14:B20")
	
	'extract the data from the range
	aSourceDataArray() = oCellRangeSource.getDataArray()
	
	Redim Preserve aSource(UBound(aSourceDataArray())) As String

	'
	For I = LBound(aSource()) To UBound(aSource())
		aDataArrayRow()	= aSourceDataArray(I)
		aSource(I) = aDataArrayRow(0)
	Next I
	'hier werden die Werte an das Kombinationsfeld übergeben
	oComboBox.StringItemList = aSource()	


End Sub
Dieses Makro muß dem Ereignis "bei Fokuserhalt" des Kombinationsfelds zugeordnet werden.

Gruß
Stephan
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hi Mike6,

die Lösung von Stephan ist die eine, - ok, zugegeben, man benötigt etwas Basic-Know-How. Und für Versionen bis 1.1.1 auch kaum anders lösbar.
Aber du hast doch Version 1.1.2?
Dort kannst du doch direkt eine Verbindung zu einem Tabellenbereich erstellen, aus dem die (Listen-) Einträge ausgelesen werden sowie eine Zelle bestimmen, in welche das Ergebnis (der selektierte Eintrag) eingetragen wird.
Hierzu rufst du das Eigenschafts-Menü des Kombinationsfeldes feldes auf, wählst den "Reiter" Daten und gibst in die erste Zeile (verknüpfte Zelle) die Zelladresse ein, in welche das Ergebnis der Wahl überttragen werden soll. Also zum Beispiel: A2 oder auch Tabelle2.a3 . In das Feld "Quellzellenbereich " kannst du jetzt die Adressrange eingeben, wo die Listeneinträge stehen. Also zum Beispiel C4:C9 , oder auch mit Tabellennamen vorweg.
Schon hast du dein gewünschtes Ergebnis - ganz ohne Programmierung.
Tia - manchmal gibt es schon echte Fortschrite.
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Das wußte ich garnicht.

Nun habe ich wohl einen wirklichen Grund um mir endlich Version 1.1.2 zu besorgen.

Gruß
Stephan
mike6
*****
Beiträge: 479
Registriert: Sa, 06.03.2004 13:58

Danke

Beitrag von mike6 »

Hallo,

vielen Dank für die schnelle Antwort. :!:

Mfg
mike
Antworten