Seite 1 von 1

Array auslesen und in in Zellen einfügen?

Verfasst: Fr, 09.01.2009 21:28
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

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

Verfasst: Fr, 09.01.2009 22:15
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

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

Verfasst: Fr, 09.01.2009 22:31
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

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

Verfasst: Sa, 10.01.2009 10:07
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...

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

Verfasst: Sa, 10.01.2009 11:25
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

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

Verfasst: Sa, 10.01.2009 16:44
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

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

Verfasst: Sa, 10.01.2009 17:06
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

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

Verfasst: Sa, 10.01.2009 17:15
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 =)

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

Verfasst: Sa, 10.01.2009 17:20
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