Wahrscheinlich ist es nur ein kleine Problem, für das ich keine Lösung finde.
Über eine Listbox und drei Checkboxen eines Dialogs werden Zahlen in dieTabelle "Info" eingetragen, die anschließend die Spalten bestimmen, deren Inhalte aus Tabelle "Daten" in ein neues Dokument, "Tabelle1", kopiert werden sollen. Zudem wird in Tabelle "Info", Zelle J2, eine Prüfsumme errechnet, die aussagt, welche Checkbox angeklickt wurde.
Das funktioniert soweit auch. Leider wird beim anschließenden Kopiervorgang lediglich die erste Spalte berücksichtigt. Wähle ich nur Array1 oder Array2 aus, so wird jeweils die richtige Spalte kopiert. Wie muss ich den Code abändern, damit die beiden richtigen Spalten bestimmt werden?
Bin gespannt.
Gruß
Uwe
Code: Alles auswählen
Sub nDoc_auffuellen
Dim nDoc as Object
Dim Arg()
Dim nDocView
Dim nURL as String
nURL = "private:factory/scalc"
nDoc=StarDesktop.loadComponentFromURL(nURL, "_blank", 0, Arg())
nDocView = nDoc.CurrentController.Frame.ContainerWindow
'oDocView.Visible = True 'Später:FALSE
Dim oSheet1
Dim oSheet2
Dim oSheet3
Dim oCellCursor
Dim letzte_Zeile
Dim Array
Dim Array1
Dim Array2
Dim aQuellSpalte
Dim aZielSpalte
Dim i as Integer
oDoc = thisComponent
oSheet1 = oDoc.Sheets.getByName ("Daten") 'QuellTabelle
oSheet2 = nDoc.Sheets.getByName ("Tabelle1") 'ZielTabelle
oSheet3 = oDoc.Sheets.getByName ("Info") 'InfoTabelle
oCellCursor = oSheet1.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
letzte_Zeile = oCellCursor.getRangeAddress.EndRow
Array1 = oSheet3.getCellRangeByName("B2").getValue
if oSheet3.getCellRangeByName("$J$2").Value = "20009" then
Array2 = oSheet3.getCellRangeByName("C2").getValue
end if
if oSheet3.getCellRangeByName("$J$2").value = "20018" then
Array2 = oSheet3.getCellRangeByName("D2").getValue
end if
if oSheet3.getCellRangeByName("$J$2").value = "20027" then
'array2 = oSheet3.getCellRangeByName("E2").getValue
end if
aQuellSpalte = Array(Array1, Array2)
aZielSpalte = Array(0,1)
for i = 0 to 1
oQuelleRange1=oSheet1.getCellRangeByPosition(aQuellSpalte(i),0,aQuellSpalte(i),letzte_Zeile)
aDat = oQuelleRange1.getDataArray()
oQuelleRange2 = oSheet2.getCellRangeByPosition(aZielSpalte(i),0,aZielSpalte(i),letzte_Zeile)
oQuelleRange2.setDataArray(aDat)
next i
end sub