Wie fülle ich automatisch leere Zellen in einer Tabelle?

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von turtle47 »

Hallo Wolfgang,

hier ein Makro von Karolus aus einem anderen Forum:

Code: Alles auswählen

Sub LeereZellenSuchen()
oSelect=ThisComponent.CurrentSelection
oColumn=oselect.Columns
oRow=oSelect.Rows
For n= 0 To oColumn.getCount-1
For m = 0 To oRow.getCount-1
oCell=oselect.getCellByPosition (n, m)
Select Case oCell.String
Case ""
oCell.String = "Otto" ' "Hier Deinen Text eingeben"
End Select
next
next
End Sub
Makro einbauen, Zellbereich markieren und Makro starten. Fertig. :D

Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von Karolus »

Hallo
@Jürgen
Bist du dir sicher das es von mir ist ? - ich nicht.

@Wolfgang
Auf Ianns Makroseite http://homepages.paradise.net.nz/hillview/OOo/ findest du u. a. folgendes: http://homepages.paradise.net.nz/hillvi ... pecial.sxc zum Suchen und Ersetzen spezieller Zellinhalte.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von turtle47 »

Hallo Karolus,

guckst Du hier:
http://www.ooo-portal.de/index.php?modu ... topic=2718

Oder hast Du einen Doppelgänger? 8)

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von Karolus »

Hallo Wolfgang
Du möchtest Zeilen einfügen, und zwar an jeder 2. Stelle:

Code: Alles auswählen

 Sub zeilenenfueg
dim z
odoc=thiscomponent
  mysheet=odoc.sheets(0)' 1.Blatt
  myrows=mysheet.getrows
for z = 1 to 21 step 2 'Hier als oberen Wert das Doppelte der vorhandenen Zeilen plus1
' Und jetzt einfügen: Index und Anzahl.
  myrows.insertbyindex(z,1)
  next
End Sub
Alles, ausser der 'for...' Zeile und 'next' ist aus Dannenhöfer:http://www.dannenhoefer.de/faqstarbasic/

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von turtle47 »

Hallo Wolfgang und Karolus,

ich hoffe Karolus ist mir jetzt nicht böse, denn ich habe die Sache zu meiner Übung noch etwas verfeinert,
möchte Euch das Ergebnis aber nicht vorenthalten.
Das Makro sucht jetzt automatisch die letzte beschriebene Zeile.
Man braucht das Makro nicht mehr zu verändern, wenn die zu bearbeitenden Tabellenblätter
unterschiedlich lang sind.

Code: Alles auswählen

Sub zeiletoTabblatt2
dim z
	odoc=thiscomponent
	oSheet = ThisComponent.CurrentController.getActiveSheet()'aktives Tabellenblatt
	oCellCursor = oSheet.createCursor()
	oCellCursor.GotoEndOfUsedArea(True)
	oCellCursor.GotoEndOfUsedArea(True)
	
	'sucht automatisch letzte beschriebene Zeile
	letzte_Zeile = oCellCursor.getRangeAddress.EndRow 
	
	'Berechnung: Letzte beschriebene Zeile mal 2 plus 1
	y = letzte_Zeile *2 +1
	myrows=osheet.getrows
	for z = 1 to (y) step 2
	
    ' Und jetzt einfügen: Index und Anzahl.
   myrows.insertbyindex(z,1)
  next

End Sub
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von komma4 »

[Unsinn gelöscht]
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von turtle47 »

Hallo,
Apothekenperf hat geschrieben:Hat jemand eine Idee, woher dieses Apostroph kommt
Ja, weil Du einen String übergibst.
Apothekenperf hat geschrieben:und wie ich es wegekomme ?
Ersetze

Code: Alles auswählen

oCell.String = "1" 
durch

Code: Alles auswählen

oCell.Value = "1" 
Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
OnkelFritz
Beiträge: 4
Registriert: Sa, 18.06.2011 10:54

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von OnkelFritz »

Hallo,

ich beschäftige mich seit kuzem mit OOo / Calc und habe natürlich gleich mal ein großes Problem:
ich habe Tabellen mit meist so um die 20.000 Datensätzen und u.a. der Spalte "Datum".
In dieser Spalte fehlen leider immer sehr viele Daten, die ich gerne mit dem Datum der darüber liegenden Zelle automatisch füllen würde.
Das ganze sieht in etwa so aus:

16.6.2011
16.6.2011
16.6.2011
= leer, hier soll der 16.6.2011 rein
16.6.2011
15.6.2011
15.6.2011
= leer, hier soll der 15.6.2011 rein
= leer, hier soll der 15.6.2011 rein
15.6.2011
14.6.2011
= leer, hier soll der 14.6.2011 rein

Ich wühle mich jetzt schon den zweiten Tag durch Foren und Suchmaschinen, komme aber leider nicht weiter...
Habe aktuell an dem Makro von Jürgen (weiter oben, vielen Dank dafür) rumgebastelt und das trägt immerhin schon mal das Datum der obersten Zelle in die leeren Zellen ein:

Code: Alles auswählen

    Sub LeereZellenSuchen()
    oSelect=ThisComponent.CurrentSelection
    oColumn=oselect.Columns
    oRow=oSelect.Rows
    For n= 0 To oColumn.getCount-1
    For m = 0 To oRow.getCount-1
    oCell=oselect.getCellByPosition (n, m)
    mycell=oselect.getCellByPosition(n, x)
    Select Case oCell.String
    Case ""
    oCell.String = mycell.String
    End Select
    next
    next
    End Sub
Weiß zwar nicht wieso und das ganze ist wohl auch nicht sehr professionell, aber es passiert wenigstens was :lol:

Probiere jetzt auch schon seit Stunden mit "GotoEndOfUsedArea" usw. herum, aber das will alles nicht so wie ich...

Würde mich riesig freuen wenn einer der Profis hier eine Idee hätte.
Vielen Dank dafür!

Onkel Fritz
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von lorbass »

Warum hängst du deine Frage an ein längst erledigtes Thema, statt ein neues im zutreffenden Unterforum OOo Basic und Java zu eröffnen?

Gruß
lorbass
OnkelFritz
Beiträge: 4
Registriert: Sa, 18.06.2011 10:54

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von OnkelFritz »

Hallo lorbass,

zum einen, weil ich versucht hatte das Makro aus diesem Thema an mein Problem anzupassen, und zum anderen, weil
ich beschäftige mich seit kuzem mit OOo / Calc
und ich deshalb nicht weiß, dass das in das
zutreffenden Unterforum OOo Basic und Java
gehört...

Trotzdem vielen Dank für die Antwort.

Onkel Fritz
Benutzeravatar
daswaldhorn
****
Beiträge: 196
Registriert: Mo, 17.05.2004 22:29
Wohnort: Voerde
Kontaktdaten:

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von daswaldhorn »

Hallo Fritz,
OnkelFritz hat geschrieben:...und das trägt immerhin schon mal das Datum der obersten Zelle in die leeren Zellen ein:...

...Weiß zwar nicht wieso...
Weil deine Variable "x" nicht genutzt wird, ist die immer Null, somit kommt der immer der oberste Wert in deine Liste.

Mit diesem Code sollte es klappen:

Code: Alles auswählen

Sub LeereZellenSuchen()
  oSelect = ThisComponent.CurrentSelection
  oColumn = oselect.Columns
  oRow = oSelect.Rows
  For n = 0 To oColumn.getCount - 1
    For m = 0 To oRow.getCount - 1
      oCell = oselect.getCellByPosition(n, m)
      Select Case oCell.String
      Case ""
      oCell.Formulalocal = oselect.getCellByPosition(n, m - 1).Formulalocal
      End Select
    next
  next
End Sub
Aufgrund des "m - 1" muss die Auswahl in der ersten Zeile gefüllte sein, sonst kommt es zu einer Fehlermeldung.

Gruß, Carsten
Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von Karolus »

Hallo
Aufgrund des "m - 1" muss die Auswahl in der ersten Zeile gefüllte sein, sonst kommt es zu einer Fehlermeldung.
Quarck - beginne die for-Schleife mit
For m = 1 to ...

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Benutzeravatar
daswaldhorn
****
Beiträge: 196
Registriert: Mo, 17.05.2004 22:29
Wohnort: Voerde
Kontaktdaten:

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von daswaldhorn »

Hallo Karo,
Karolus hat geschrieben:Quarck - beginne die for-Schleife mit
For m = 1 to ...
So einfach kann das Leben sein :-)

Gruß, Carsten
OnkelFritz
Beiträge: 4
Registriert: Sa, 18.06.2011 10:54

Re: Wie fülle ich automatisch leere Zellen in einer Tabelle?

Beitrag von OnkelFritz »

Hallo Carsten, Hallo Karo,

das funktioniert 1A!
Vielen, vielen Dank dafür!

Ich hatte mich schon an sowas "ähnlichem" versucht, aber "ähnlich" reicht halt nunmal nicht...
Ihr habt meinen Tag gerettet... :D

Viele Grüße

Onkel Fritz
Antworten