Dialog:Zellbereich in NumericFields lesen

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

Moderator: Moderatoren

Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Dialog:Zellbereich in NumericFields lesen

Beitrag von Jörg »

Hallo Fachleute,
jede einzelne Zelle einzulesen klappt.

Code: Alles auswählen

sub neue_preise_lesen
odoc = thiscomponent
osheet = odoc.Sheets.getByName("Preisliste")
 mycell = osheet.getCellRangeByName("B5")
   c = mycell.value
   oDialog6.getControl("NumericField1").value = c 
  mycell = osheet.getCellRangeByName("C5")
   c = mycell.value
   oDialog6.getControl("NumericField2").value = c  
 mycell = osheet.getCellRangeByName("D5")
   c = mycell.value
   oDialog6.getControl("NumericField3").value = c
   'usw.
   end sub
Das Problem auch hier:
Es soll der Zellbereich B5:V5 in die NumericFields 1bis 20 gelesen werden.
Analog dazu noch ein weiterer.
Doch für 40 Zellen erscheint das mir zu unübersichtlich.
Vielleicht habt Ihr ja ne Array-Lösung ?
Würd mich freuen?

Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Dialog:Zellbereich in NumericFields lesen

Beitrag von F3K Total »

Moin, so?

Code: Alles auswählen

sub neue_preise_lesen
    odoc = thiscomponent
    osheet = odoc.Sheets.getByName("Preisliste")
    oRange = osheet.GetcellRangebyName("B5:V5")
    adata = oRange.dataArray
    DialogLibraries.loadLibrary("Standard")
    oDialog6 = CreateUnoDialog(DialogLibraries.Standard.Dialog6)
    for i = 0 to ubound (adata(0))
          oDialog6.getControl("NumericField" & (i+1)).value = adata(0)(i)
    next i
    oDialog6.execute
End Sub
B5 bis V5 hat übrigens 21 Werte
Gruß R
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Dialog:Zellbereich in NumericFields lesen

Beitrag von Jörg »

Hallo,
danke für die Antwort. Klar 21.
Dein Code funktioniert soweit.
Aber ich hätte genauer formulieren müssen sorry.
Ich verweise mal auf meinen Beitrag von vorgestern.
viewtopic.php?f=18&t=66621

Numericfield 1-21 Zellbereich B5:V5
Numericfield 22-42 Zellbereich B16:V16

Ich weiß leider nicht, welche Änderungen in Deinem Code ich vornehmen muß. Das simple Erweitern des Arrays ("B5:V5; "B16:V16") geht nicht.

Wäre schön, wenn Du nochmal drauf schaust.

Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Dialog:Zellbereich in NumericFields lesen

Beitrag von F3K Total »

Code: Alles auswählen

sub neue_preise_lesen
    odoc = thiscomponent
    osheet = odoc.Sheets.getByName("Preisliste")
    oRange1 = osheet.GetcellRangebyName("B5:V5")
    adata1 = oRange1.dataarray
    oRange2 = osheet.GetcellRangebyName("B16:V16")
    adata2 = oRange2.dataarray
    DialogLibraries.loadLibrary("Standard")
    oDialog6 = CreateUnoDialog(DialogLibraries.Standard.Dialog6)
    for i = 0 to ubound (adata1(0))
          oDialog6.getControl("NumericField" & (i+1)).value = adata1(0)(i)
    next i
    for i = 0 to ubound (adata2(0))
          oDialog6.getControl("NumericField" & (i+22)).value = adata2(0)(i)
    next i
    oDialog6.execute
End Sub
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Dialog:Zellbereich in NumericFields lesen

Beitrag von Jörg »

Hallo und vielen Dank.

in der Zwischenzeit war mir das "gelungen".

Code: Alles auswählen

sub neue_preise_lesen
    odoc = thiscomponent
    osheet = odoc.Sheets.getByName("Preisliste")
    oRange = osheet.GetcellRangebyName("B5:V5")
    adata = oRange.dataArray
   ' DialogLibraries.loadLibrary("Standard")
    'oDialog6 = CreateUnoDialog(DialogLibraries.Standard.Dialog6)
    for i = 0 to ubound (adata(0))
          oDialog6.getControl("NumericField" & (i+1)).value = adata(0)(i)
        next i
           oRange = osheet.GetcellRangebyName("B16:V16")
            for i = 0 to ubound (adata(0))
            adata = oRange.dataArray
           oDialog6.getControl("NumericField" & (i+22)).value = adata(0)(i)
          next i
    'oRange = osheet.GetcellRangebyName("B16:V16")
   ' adata = oRange.dataArray
    'DialogLibraries.loadLibrary("Standard")
    'oDialog6 = CreateUnoDialog(DialogLibraries.Standard.Dialog6)
  
    'for i = 0 to ubound (adata(0))
     '     oDialog6.getControl("NumericField" & (i+1)).value = adata(0)(i)
  
    'oDialog6.execute
End Sub
Nochmals vielen Dank für Deine Hilfe.
Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
Antworten