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.
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