Zellbereich in einem Textfield lesen

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

Moderator: Moderatoren

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

Zellbereich in einem Textfield lesen

Beitrag von Jörg »

hallo Fachleute,
in meinem Dialog möchte ich den Zellbereich "G8:I8" in einem Textfield lesen.
Mit nachstehendem Code erhalte ich allerdings die Fehlermeldung: Eigenschaft oder Methode nicht gefunden: string.
Als Variable habe ich
Dim Anschrift as Object deklariert.

Code: Alles auswählen

 Anschrift = osheet.getCellRangeByName("G8:I8")
            myString14 = Anschrift.string
            oDialog4.getControl("TextField15").Text = myString14  

Wäre schön, wenn, Ihr mir helfen könntet.
Vielen Dank.
Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellbereich in einem Textfield lesen

Beitrag von clag »

Hallo Jörg,

was soll da nun genau passieren
G8, H8, I8 nebeneinander, untereinander mit Abstand ?
und dann alles zusammen in Textfeld14 schreiben?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Zellbereich in einem Textfield lesen

Beitrag von Jörg »

Hallo clag,

also in ("G8:I8") ,Tabelle soundso steht was drin.
Ich öffne meinen Dialog und in Textfield 15(!) soll stehen (lesen), was in G8 & H8 & I8 steht.

Geht das überhaupt?
Bei einzelnen Zellen hab ich das ohne Problem hingekriegt.

Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellbereich in einem Textfield lesen

Beitrag von clag »

Hallo Jörg,

Code: Alles auswählen

Sub Main
oCalc = ThisComponent
oSheet = oCalc.Sheets(0) 
	myArray = oSheet.getCellRangeByName("G8:I8").getdataArray
	mStrings = myArray(0)
	sLongText = join(mStrings()," - ")
	print sLongText
End Sub
vielleicht so!?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Zellbereich in einem Textfield lesen

Beitrag von Jörg »

Hallo clag,
cool. Dit is aber schnieke.
Danke Dir und wünsche einen schönen Abend.
Gruß Jörg

Code: Alles auswählen

sub Main      
  myArray = oSheet.getCellRangeByName("G8:I8").getdataArray
  mStrings = myArray(0)
  sLongText = join(mStrings()," - ")            
   oDialog4.getControl("TextField15").Text = slongText
   end sub
    
Gruß Jörg

Win 10 Pro AOO 4.1.15
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Zellbereich in einem Textfield lesen

Beitrag von Jörg »

Hallo Fachleute, ein kleines Problem.
Dank clags Hilfe lese ich einen Zellbereich in einem Textfield aus.

Code: Alles auswählen

myVerordn5 = oSheet.getCellRangeByName("E17:D17").getdataArray
          mStrings = myVerordn5(0)
          sLongText = join(mStrings()," x ")           
          oDialog4.getControl("TextField23").Text = slongText
Die Werte in E17 und D17 sind Ergebnisse einers Sverweises. ( Bsp. 10 x irgendwas)

Code: Alles auswählen

=(SVERWEIS($B$8;Rechnungen.$A$1:Rechnungen.$AV$439;VERGLEICH($T$3;Rechnungen.$A$1:$AV$1;0);0))
Wenn die Zellen Leer sind erscheint im Textfield: 0 x 0.
Nun habe ich die Formel geändert in:

Code: Alles auswählen

=WENN(ISTLEER(SVERWEIS($B$8;Rechnungen.$A$1:Rechnungen.$AV$439;VERGLEICH($T$3;Rechnungen.$A$1:$AV$1;0);0));"";(SVERWEIS($B$8;Rechnungen.$A$1:Rechnungen.$AV$439;VERGLEICH($T$3;Rechnungen.$A$1:$AV$1;0);0)))

bleibt als Ergebnis im Textfield: X
Soweit logisch.
Nun hatte ich versucht, dass x auch noch wegzubekommen.

Code: Alles auswählen

        Dim myVerordn5 as Object
                 myVerordn5 = oSheet.getCellRangeByName("E17:D17").getdataArray
                 mStrings = myVerordn5(0)
                 if myVerordn5 <> "" then
                 sLongText = join(mStrings()," x ")           
                 oDialog4.getControl("TextField23").Text = slongText
                 else
                 sLongText = join(mStrings(),"  ")           
                oDialog4.getControl("TextField23").Text = slongText 
                end if 
Klappt aber leider nicht, weil eine Objektvariable nicht belegt ist (Fehlermeldung).

Code: Alles auswählen

if myVerordn5 <> "" then
Wie muß es richtig sein?

Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellbereich in einem Textfield lesen

Beitrag von clag »

Hallo Jörg,

du machst m.E. es unnötig kompliziert,
sorge in deinen Formeln dafür das du immer eine "0" oder den richtigen Text bekommst,
wenn es nur eine Zeile ist, kann man auch noch etwas kürzer werden
dann reicht eine zusätzliche Zeile im Code um dein Problem zu lösen,

Code: Alles auswählen

Dim oVerordn5 as Object
	oVerordn5 = oSheet.getCellRangeByName("D17:E17").getdataArray
	sLongText = join(oVerordn5(0)," x ")
	if sLongText = "0 x 0" then sLongText = ""  '<<<<<<<  diese Zeile einfügen
	oDialog4.getControl("TextField23").Text = sLongText
tut es mit dem Code wie gewünscht?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Zellbereich in einem Textfield lesen

Beitrag von Jörg »

Hallo clag,
danke, dass Du Dir trotz der Hitze die Mühe machst.
Nachdem ich die Formeln wieder in den Ursprungszustand gebracht habe, funktioniert Dein Vorschlag bestens.
Eine Frage hätte ich jedoch.
Warum endet die if-Anweisung nicht mit end if ??

Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellbereich in einem Textfield lesen

Beitrag von clag »

Jörg hat geschrieben:Warum endet die if-Anweisung nicht mit end if ??
weil die einzige then Anweisung direkt danach in der selben Zeile folgt
dann ist das "end if" nicht erforderlich.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Zellbereich in einem Textfield lesen

Beitrag von Jörg »

Jo, danke.
Gruß Jörg

Win 10 Pro AOO 4.1.15
Antworten