Leere Zeile

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

Moderator: Moderatoren

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

Re: Leere Zeile

Beitrag von Jörg »

Hallo,
erst mal vielen Dank, für Eure rege Anteilnahme.
F3K Total hat geschrieben:Irgendwie hatte ich wohl "CopyRange" im Hinterkopf, dabei braucht man ja eine Zielzelle.
Auch wenn es jetzt unwahrscheinlich klingt.
Aber ich glaube das das auch mein Hänger war. Denn dazu braucht man ja eben nur die
Stephan hat geschrieben:Spalte-links-oben
Zeile-links-oben
Von daher kam ich gar nicht auf diese Idee:
Stephan hat geschrieben:osheet.getCellRangeByPosition(1,iLetzteZeile,11,iLetzteZeile).setDataArray(array_1())
Bei mir sieht es jetzt so aus und funktioniert so wie ich es mir vorgestellt habe.

Code: Alles auswählen

osheet.getCellRangeByPosition(1, iLetzteZeile-1, 11, iletzteZeile-1).setDataArray(array_1) 
Ich les mir aber alles noch mal in Ruhe durch.
Also nochmals vielen Dank für Eure Mitwirkung.
Schönes Wochenende!
Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Leere Zeile

Beitrag von balu »

Mahlzeit Jörg!

Oh man oh man! Du änderst an irgendwelchen Stellen etwas nach gut Dünken, aber probierst es nicht aus ob das auch so funktioniert.

Mir geht es jetzt erstmal speziell um das hier.

Code: Alles auswählen

With oSheet
     x = .Columns("0:11").queryEmptyCells()
     iLetzteZeile = x(x.Count-1).RangeAddress.StartRow +1
End With
Wer sagt das dies funktioniert?
Also von mir hast Du das bestimmt nicht!

Ich sage: Das funktioniert absolut nicht!

Du bekommst wohl eine Zahl für die erste freie Zelle nach der letzten benutzen Zeile (iLetzteZeile), aber sie ist NICHT aus dem Spaltenindexbereich 0 bis 11 (A bis L), sondern nur aus der Spalte 0 (A). Denn es wird immer lediglich nur eine Spalte genommen, auch wenn Du einen Bereich angibst. Und bei einem angegebenen Spaltenbereich wird nur die erst genannte genommen. Du kannst dann z.B. in der Spalte B soviel eingeben wie Du willst, sie wird nicht berücksichtigt, da nur die Spalte A ausgewertet wird.

Also ändere das auf nur eine Spalte.
Beispielsweise:

Code: Alles auswählen

     x = .Columns(0).queryEmptyCells()
Oder aber Du legst dir ein ganz dickes fettes Ei. Und wunderst dich hinterher warum auf einmal Daten fehlen.

Falls Du aber meinst das ich mit meiner Aussage falsch liege, dann beweise mir das ich unrecht habe.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Leere Zeile

Beitrag von Karolus »

Hallo

Code: Alles auswählen

with sheet
x = .Columns("0:11")
...
wobei diese - extrem kreative - Syntax, noch vom BASIC-interpreter überboten wird, der diesen Quark stillschweigend ohne Fehlermeldung akzeptiert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Jörg
*****
Beiträge: 392
Registriert: Mo, 21.10.2013 12:05

Re: Leere Zeile

Beitrag von Jörg »

Hallo Leute,
bitte nich aufregen.
Mein fertiger Code sieht so aus:

Code: Alles auswählen

sub Datensatz_azh_Speichern
Dim array_1(10)
   		odoc = ThisComponent
    osheet = ThisComponent.Sheets.GetByName("Tabelle18")
	     myctrl = oDialog8.GetControl("ListBox2")  
      With oSheet 
         x = .Columns(0).queryEmptyCells()
         iLetzteZeile = x(x.Count-1).RangeAddress.StartRow +1
      End With
       
       mycell = oSheet.getCellRangeByName("A" & iLetzteZeile )
       ListBox2 = myctrl.selecteditem
        mycell.string = ListBox2
      
      for ta = 1 to 11
  array_1(ta-1) = oDialog8.getControl("TextField" & ta).text
  
next ta

array_1 = Array(array_1())
 osheet.getCellRangeByPosition(1, iLetzteZeile-1, 11, iletzteZeile-1).setDataArray(array_1) 


oDialog8.endExecute()

End Sub	
So funktioniert es.

Gruß Jörg
Gruß Jörg

Win 10 Pro AOO 4.1.15
Antworten