Bereich löschen

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

Moderator: Moderatoren

kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Bereich löschen

Beitrag von kalle2005 »

Hallo Leute,
diesen thread
konnte ich nach tagelangem Lesen mit einer Inputbox erfolgreich erledigen.
Nun habe ich ein weiteres Problem.
Ich habe Zeilen von z.B. "E" bis "H" , die ich mit Leben fülle. Rechts und links davon habe ich Zellen mit einer Hintergrundffarbe gefüllt.
Wenn ich nun die letzte Zeile von E bis H löschen will, gelingt mir dies nur bis zur Hintergrundffarbe.
Was mache ich falsch ?
Könnt ihr mir bitte helfen ?
Gruß
Kalle
Dateianhänge
Bereich löschen.ods
(16.52 KiB) 112-mal heruntergeladen
Win 10 Pro, AOO 4.1.9
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Bereich löschen

Beitrag von F3K Total »

Naja,
wenn ich dich richtig verstehe, möchtest du die hellgrüne Hintergundfarbe in den Spalten A und L auch entfernen, also ändere
oCellRange = osheet.getCellRangeByName("B" & End_Row +1 & ":K" & End_Row +1 )
in
oCellRange = osheet.getCellRangeByName("A" & End_Row +1 & ":L" & End_Row +1 )
Gruß R
kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Re: Bereich löschen

Beitrag von kalle2005 »

Hallo F3K Total,
da habe ich mich wohl falsch ausgedrückt. Die Hintergrundfarben sollen bestehen bleiben. Lediglich die erwähnten Zeilen sollten gelöscht werden.
Ich finde einfach keine Möglichkeit, dies zu bewerkstelligen.
Gruß
Kalle
Win 10 Pro, AOO 4.1.9
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Bereich löschen

Beitrag von F3K Total »

Was den nun,
  • Inhalt der Zellen löschen
  • Umrandung löschen
  • Hintergrundfarbe löschen
für exakt welche Zellen?
R
kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Re: Bereich löschen

Beitrag von kalle2005 »

Hallo F3K Total,
In der Tabelle 1 z.B. sollen diese Zellen gelöscht werden.
osheet.getCellRangeByName("B" & End_Row +1 & ":K" & End_Row +1 ). Nichts anderes.
Links und rechts von dem genannten Bereich sollen die Formatierungen weiter bestehen bleiben.
Ob ich nun
clearContents(255)
für den genannten Bereich nehme oder (3) pp. entscheide ich später. Oder ist dies wichtig ?
Ich möchte doch nur wissen wie ich die Zellen in dem genannten Bereich löschen kann, ohne die anderen Zellen, denn dies klappt einfach nicht.
Gruß
Kalle
Win 10 Pro, AOO 4.1.9
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Bereich löschen

Beitrag von F3K Total »

Sorry, bei mir tut dein Makro genau das!
Siehe Mini-Video anbei.
Ich habe keine Ahnung was du sonst willst, da du nicht erklärst, was genau du gelöscht haben möchtest.

Gruß R
Dateianhänge
BL.zip
nur entpacken
(108.25 KiB) 122-mal heruntergeladen
kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Re: Bereich löschen

Beitrag von kalle2005 »

Hallo F3K Total,
auch beim zweiten oder dritten Mal ?
Gruß
Kalle
Win 10 Pro, AOO 4.1.9
kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Re: Bereich löschen

Beitrag von kalle2005 »

Zusatz
bei mir klappt es auch nur ein Mal. Ich schließe das Dokument, rufe es wieder auf und...................... nichts passiert.
Tagelang habe ich schon in diesem Forum gesucht und nichts gefunden, deshalb schreibe ich jetzt.
Es ist zum Mäuse melken.
Dein Video F3K Total habe ich gesehen. So soll es immer für die letzte Zeile sein. :lol:
Gruß
Kalle
Win 10 Pro, AOO 4.1.9
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Bereich löschen

Beitrag von balu »

Hallo Kalle,

Du weisst schon was dies hier nachbildet?

Code: Alles auswählen

   	oSheet = oDoc.Sheets().getByName("Tabelle1")
	oSheet = thiscomponent.getCurrentController.activesheet
	oCellCursor = oSheet.createCursor()
	oCellCursor.GotoEndOfUsedArea(false)
	End_Row = oCellCursor.getRangeAddress.EndRow
Das ist das gleiche, als wenn Du den Zellcursor auf A1 setzt, und dann die Tasstenkombination "Strg" + "Ende" drückst.

Verschieb mal in deiner Beispieldatei den Button im Blatt *Tabelle1* irgendwo in dem Bereich der ersten 4 Zeilen, also oberhalb deines farbbereiches. Danach drückst Du die eben genannte Tastenkombination. Und Du wirst selber sehen wohin der Zellcursor springt.

Drück den Button, bestätige deine Sicherheitsabfrage, und Du wirst sehen was passiert.
Danach drückst Du wieder die Tastenkombination, und Du siehst wohin der Zellcursor springt.

Das ist der Beweis, das die Zelle trotz ohne Text, und nur mit Farbe, für Calc eine benutzte Zelle ist. Normalerweise heißt es ja in Calc, das eine Zelle nur mit Farbe nur eine Formatierte Zelle ohne Inhalt ist, aber in diesem Falle ist das ein klein wenig anders. Sie hat wohl beispielsweise keinen Text, aber durch die Farbe ist sie als benutzt markiert.

Das heißt also jetzt, das Farbliche Zellen in diesem Falle kein guter und verlässlicher Anhaltspunkt sind um einen bestimmten Bereich auszuwerten. Da muss eine andere Methode, ein anderes System her. Doch welches System geeignet wäre, ist schwer zu sagen.

Am "einfachsten" wäre es, wenn in einer benachbarten Spalte für jede ausgefüllte Zeile im Bereich B bis K irgendetwas drin steht, beispielsweise ein *. Und die Zeile mit dem letzten * wäre die zu löschende Zeile im genannten Bereich. Und beim eigentlichem löschen wird auch der dementsprechende * mitgelöscht. Siehe angehängtes Beispiel.

Die jetzige Beispieldatei soll nur das Grundlegende Prinzip darstellen, Optimierung und sonstiges ist nicht enthalten. Wäre das für dich eine alternative?



Gruß
balu
Dateianhänge
Bereich löschen-b0.ods
(17.09 KiB) 108-mal heruntergeladen
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
kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Re: Bereich löschen

Beitrag von kalle2005 »

Danke Balu,
Deine Datei klapp sehr gut. Damit kann ich weiter arbeiten.
Ich konnte nicht begreifen, wenn ich nur bestimmte Bereiche( letzte Zeile) löschen will, dies einfach nicht klappt.
Auf die Idee, dass dies etwas mit dem Cursor zu tun hat, wäre ich nie und nimmer gekommen.
Diese "Hilfsspalte" werde ich gut verpacken.
Ich lerne immer noch dazu.
Vielen Dank Balu
Win 10 Pro, AOO 4.1.9
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Bereich löschen

Beitrag von balu »

Die Hilfsspalte alleine macht es ja nicht alleine. Das Problem wird sein: "Wie bekommst Du den * da rein?"

Das das löschen funktioniert, hast Du ja gesehen. Aber da Du ja irgendwann irgendwie Daten in deinen Datenbereich eingeben wirst, musst Du dir was einfallen lassen den * auch miteintragen zu lassen. Ohne * wird das nix mit dem löschen, oder anders ausgedrückt es wird falsch gelöscht.



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
kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Re: Bereich löschen

Beitrag von kalle2005 »

Hallo balu,
ich denk noch drauf rum.
Auf Schlag würde ich folgendes sagen:
Da ich das besagte Makro ich für einen Dialog brauche würde ich also ein weiteres Text-Feld einrichten und das "*" darin unterbringen.

Vielleicht gelingt mir dies. Mal sehen. Oder hast Du einen Vorschlag für mich ?
Gruß
Kalle
Win 10 Pro, AOO 4.1.9
kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Re: Bereich löschen

Beitrag von kalle2005 »

Hallo balu,
soeben habe ich es mit dem Text-Feld probiert und was soll ich sagen: es klappt.

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

Re: Bereich löschen

Beitrag von balu »

Hallo Kalle,

wie wärs denn, wenn der * automatisch eingetragen wird sobald Du einen Datensatz übernimmst? Denn schließlich gibst Du wohl über den Dialog Daten ein die auch in die Zellen eingetragen werden, also gleich in einem Abwasch auch den * mit übernehmen. Hat den Vorteil, er wird nicht aus versehen vergessen. Ist aber auch nur mal so eine Idee von mir.



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
kalle2005
**
Beiträge: 26
Registriert: Do, 29.11.2018 18:52

Re: Bereich löschen

Beitrag von kalle2005 »

Hallo balu,
Im Text-Feld habe ich das "Sternchen" voreingestellt (so heißt das wohl) und wird damit automatisch in die betreffende Zelle eingetragen.

Code: Alles auswählen

    oSheet.getCellRangeByName("Q" & End_Row).String = Dlg_Pkw.getControl("Sternchen").Text
Dies funkt jetzt soweit wunderbar.
Weiterhin habe ich noch vor die Zellen zu formatieren; bestimmte Codes habe ich bereits gefunden, nur muss ich sie noch einbinden.

Da ich gelesen habe, dass Du auch Spezialist in Dialog-Seiten bist, habe ich eine kurze Frage:
Was muss ich im Markro "Speichern" schreiben damit die auf einer Seite z.B. Seite 3 die Text-, Kombi-, Listen-Felder in die Tabelle geschrieben werden ?
Ich hoffe, ich konnte mich klar ausdrücken.

Gruß
Kalle
Win 10 Pro, AOO 4.1.9
Antworten