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