Array auslesen und in in Zellen einfügen?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

gurkende_gurke
**
Beiträge: 42
Registriert: So, 21.09.2008 16:42

Array auslesen und in in Zellen einfügen?

Beitrag von gurkende_gurke »

Hallo zusammen,
ich habe folgendes Problem: Ich habe ein Array mit zufallszahlen zwischen 1-4 gefüllt, was kein Problem war. Jedoch habe ich jetzt verzweifelt versucht, dieses Array auszulesen und in die Zellen A1:A4 des ersten Tabellenblatts einzufügen. Hoffe ihr könnt mir hier weiterhelfen =)

Code: Alles auswählen

Function rndnumber as integer
dim intzahl as Integer
dim BLNAbbrechen as BOOLEAN
DO
intzahl=int((5*rnd))
if intzahl=5 or intzahl=0 then
	BLNAbbrechen=false else
	BLNAbbrechen=true
endif
LOOP WHILE BLNAbbrechen=false
end Function

Sub test
dim Feld1(1,1) as integer
Feld1(0,0)=rndnumber
Feld1(1,0)=rndnumber
Feld1(0,1)=rndnumber
Feld1(1,1)=rndnumber
end sub
Vielen Dank im Vorraus für jede Hilfe
Ironzwerg
***
Beiträge: 65
Registriert: Mi, 22.08.2007 22:36
Wohnort: Bielefeld
Kontaktdaten:

Re: Array auslesen und in in Zellen einfügen?

Beitrag von Ironzwerg »

Du kannst das Array mit einer For...Next-Schleife auslesen.
Für deinen Fall würde ich aber ein Eindimensionales Array verwenden.
Das müsstest du dann so deklarieren: Dim Feld1(3)
Dann kannst du vier Werte drin speichern.

Die For-Schleife könnte dann so aussehen:

For iIndex = LBound(Feld1) to UBound(Feld1)
MsgBox Feld1(iIndex)
Next iIndex


Gruß

Ironzwerg
Das Antonym von Antonym ist Synonym
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Array auslesen und in in Zellen einfügen?

Beitrag von Charly »

Hallo!

Dein Array kannst du wie folgt auslesen und den Zellen A1 bis A4 zuordnen. Dazu muss aber wie in deinem Fall die Größe und Dimension des Arrays bekannt sein. Ist dies nicht bekannt, muss sie LBound und UBound ermittelt werden.

Code: Alles auswählen

Sub test

Dim Doc as Object
Dim Blatt as object
dim Feld1(1,1) as integer
dim Zelle as object
dim Zeile as long


Feld1(0,0)= 1
Feld1(1,0)=2
Feld1(0,1)=3
Feld1(1,1)=4

Doc = ThisComponent
Blatt = Doc.sheets(0)
Zeile = 0

For I = 0 to 1
For I1 = 0 to 1
Zelle = Blatt.getCellbyposition (0,Zeile)
Zelle.value = Feld1(I1,I)
Zeile = Zeile + 1
next
next

end sub
Leichter ist das Abarbeiten, wenn es nur eine Dimension gibt.


Gruß

Charly
gurkende_gurke
**
Beiträge: 42
Registriert: So, 21.09.2008 16:42

Re: Array auslesen und in in Zellen einfügen?

Beitrag von gurkende_gurke »

Danke für die Hilfe. Allerdings ist es für mich deshalb leichter das array 2dimensional zu machen, da ich das ganze später mit 81 von einander abhängigen zellen im array machen werde (sudoku eben) und man da mit nem 1dimensionalen array schonmal durcheinander kommen kann...
Allerdings trägt mir mein makro immer noch nichts ein... hab es jetzt so angelegt

Code: Alles auswählen

REM  *****  BASIC  *****

Function rndnumber as integer
dim intzahl as Integer
dim BLNAbbrechen as BOOLEAN
DO
intzahl=int((5*rnd))
if intzahl=5 or intzahl=0 then
	BLNAbbrechen=false else
	BLNAbbrechen=true
endif
LOOP WHILE BLNAbbrechen=false
end Function

Sub test

Dim Doc as Object
Dim Blatt as object
dim Feld1(1,1) as integer
dim Zelle as object
dim Zeile as long

Feld1(0,0)=rndnumber
Feld1(1,0)=rndnumber
Feld1(0,1)=rndnumber
Feld1(1,1)=rndnumber

Doc = ThisComponent
Blatt = Doc.sheets(0)
Zeile = 0

For I = 0 to 1
For I1 = 0 to 1
	Zelle = Blatt.getCellbyposition (0,Zeile)
	Zelle.value = Feld1(I,I1)
	Zeile = Zeile + 1
next
next

end sub
es wird immer noch nichts in eine zelle geschrieben...
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Array auslesen und in in Zellen einfügen?

Beitrag von Charly »

Hallo!
gurkende_gurke hat geschrieben: Allerdings trägt mir mein makro immer noch nichts ein...
Das kommt daher, dass deine Funktion keinen Wert zurückgibt. Du musst vor End Function der Funktionsvariablen einen Wert zuweisen.

Code: Alles auswählen

Function rndnumber as integer
dim intzahl as Integer
dim BLNAbbrechen as BOOLEAN
DO
intzahl=int((5*rnd))
if intzahl=5 or intzahl=0 then
   BLNAbbrechen=false else
   BLNAbbrechen=true
endif
LOOP WHILE BLNAbbrechen=false
rndnumber = intzahl

end Function
Gruß
Charly
gurkende_gurke
**
Beiträge: 42
Registriert: So, 21.09.2008 16:42

Re: Array auslesen und in in Zellen einfügen?

Beitrag von gurkende_gurke »

Habs editiert, das Makro macht immer noch nichts... :-/

Code: Alles auswählen

REM  *****  BASIC  *****

Function rndnumber as integer
dim intzahl as Integer
dim BLNAbbrechen as BOOLEAN
DO
intzahl=int((5*rnd))
if intzahl=5 or intzahl=0 then
	BLNAbbrechen=false else
	BLNAbbrechen=true
endif
LOOP WHILE BLNAbbrechen=false
rndnumber=intzahl
end Function

Sub test

Dim Doc as Object
Dim Blatt as object
dim Feld1(1,1) as integer
dim Zelle as object

Feld1(0,0)=rndnumber
Feld1(1,0)=rndnumber
Feld1(0,1)=rndnumber
Feld1(1,1)=rndnumber

Doc = ThisComponent
Blatt = Doc.sheets(0)


For I = LBound(Feld1) to UBound(Feld1)
	For I1 = LBound(Feld1) to Ubound(Feld1)
		Zelle = Blatt.getCellbyposition (I,I1)
		Zelle.value = Feld1(I,I1)
	next
next

end sub
Irgendjemand ne idee was ich verändern muss? Danke im Vorraus für jede Hilfe
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Array auslesen und in in Zellen einfügen?

Beitrag von turtle47 »

Hallo,
gurkende_gurke hat geschrieben:Habs editiert, das Makro macht immer noch nichts... :-/
Ich weis ja nicht was Du da anstellst, aber bei mir funktioniert das Makro. :D

Jürgen
Dateianhänge
rndnumber.ods
(8.56 KiB) 91-mal heruntergeladen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
gurkende_gurke
**
Beiträge: 42
Registriert: So, 21.09.2008 16:42

Re: Array auslesen und in in Zellen einfügen?

Beitrag von gurkende_gurke »

Danke, Fehler gefunden. Hab einfach die falsche Reihenfolge gehabt, statt erst Sub dann Function erst Function dann Sub, wodurch der die Function danach nicht findet. Danke Jürgen =)
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Array auslesen und in in Zellen einfügen?

Beitrag von Charly »

Hallo!

Schön dass es jetzt funktioniert. Noch ein Tip.

Bei den Befehlen LBound und UBound solltest du auch die Dimension angeben die du abfragen willst, denn sonst wird immer nur die erste Dimension abgefragt.

zB. wie:

Code: Alles auswählen

For I = LBound(Feld1,1) to UBound(Feld1,1)
   For I1 = LBound(Feld1,2) to Ubound(Feld1,2)
Gruß
Charly
Antworten