❤️ Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! ❤️
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

LibreOffice benutzerdefinierte Formeln

CALC ist die Tabellenkalkulation, die Sie immer wollten.
paljass
* LO-Experte *
Beiträge: 695
Registriert: Fr 18. Mär 2011, 15:34

Re: LibreOffice benutzerdefinierte Formeln

Beitrag von paljass » Sa 27. Jul 2013, 07:15

Moin,
@Gert
Schade, wieder mal ne Antwort am Thema vorbei!
Ryoho wollte die doppelte Projektnummer vermeiden und die steht nicht in Spalte A, sondern in Spalte B und hat zudem auch überhaupt nichts mit Zeile() zu tun.

Ich hab mal mit Gültigkeit rumprobiert und bin zu der Überzeugung gekommen, dass das nicht funktioniert. Du musst wohl die Zählenwenn-Auswertung in eine extra Spalte auslagern.

Gruß
paljass

[edit]
Noch was zu der Zählenwenn()-Funktion.
Ryoho hat geschrieben, das er doppelte Einträge vermeiden will und setzt dennoch Zählenwenn()=1. Wenn man nun in eine Zelle eine Zahl einträgt, ist di Bedingung erfüllt; sie taucht ja einmal auf, weshalb eigentlich ein Fehler ausgeworfen werden müsste.
Ich hab aber auch mal Zählenwenn()>1 ausprobiert, funktiniert aber auch nicht.
Warum, das kann man erkennen, wenn man wie balu vorschlug bei der Gültigkeut Zellbereich auswählt und die Formel eingibt. Man erhält dann eine Liste der möglichen Einträge - und die ist im vorliegenden Fall auf 0 (Null) begrenzt, weil Zählenwenn() auf leere Zellen bezogen immer Falsch (also 0) ergibt.

Ryoho
Beiträge: 48
Registriert: Fr 26. Jul 2013, 08:36

Re: LibreOffice benutzerdefinierte Formeln

Beitrag von Ryoho » Mo 29. Jul 2013, 08:41

paljass hat geschrieben:Moin,
@Gert
Schade, wieder mal ne Antwort am Thema vorbei!
Ryoho wollte die doppelte Projektnummer vermeiden und die steht nicht in Spalte A, sondern in Spalte B und hat zudem auch überhaupt nichts mit Zeile() zu tun.

Ich hab mal mit Gültigkeit rumprobiert und bin zu der Überzeugung gekommen, dass das nicht funktioniert. Du musst wohl die Zählenwenn-Auswertung in eine extra Spalte auslagern.

Gruß
paljass

[edit]
Noch was zu der Zählenwenn()-Funktion.
Ryoho hat geschrieben, das er doppelte Einträge vermeiden will und setzt dennoch Zählenwenn()=1. Wenn man nun in eine Zelle eine Zahl einträgt, ist di Bedingung erfüllt; sie taucht ja einmal auf, weshalb eigentlich ein Fehler ausgeworfen werden müsste.
Ich hab aber auch mal Zählenwenn()>1 ausprobiert, funktiniert aber auch nicht.
Warum, das kann man erkennen, wenn man wie balu vorschlug bei der Gültigkeut Zellbereich auswählt und die Formel eingibt. Man erhält dann eine Liste der möglichen Einträge - und die ist im vorliegenden Fall auf 0 (Null) begrenzt, weil Zählenwenn() auf leere Zellen bezogen immer Falsch (also 0) ergibt.
Moin paljass,
Ja ich habe es so herum aufgegeben.
ich brauch aber wirklich das bei einer Eingabe in Spalte B eine Fehlermeldung kommt wenn die Zahl von b1 bis B5000 schonmal vorhanden ist, dabei aber die eigene eingabe in Zeile 4799 nicht berücksichtigt wird. hab jetzt schon ne hilfsspalte eingefügt die mir wie vorher schon beschrieben wahr oder falsch ausgibt... bringt mir nichts... da ich ja keine Fehlermeldung erhalte und die eingabe gestoppt wird... und nein nur weil das Feld rot ist hält es niemanden davon ab weiter einzugeben... langsam macht libreOffice keinen spaß mehr und an egsel, naja Gültigkeit -> benutzerdefiniert gibt es schon seit MS97

http://www.lubasch.ch/office/excel/exce ... spalte.pdf

sonst gäbet es ja irgendeine mögliche Lösung...

Ryoho
Beiträge: 48
Registriert: Fr 26. Jul 2013, 08:36

Re: LibreOffice benutzerdefinierte Formeln

Beitrag von Ryoho » Mo 29. Jul 2013, 13:00

Hallo liebes LibreOffice Team =)
Ich war nicht ganz untätig ich versuchs momentan mit einer etwas anderen lösung:

Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Application.WorksheetFunction.CountIf(Range("B4:B15000"), Target) > 1 Then Target = ""
MsgBox "Achtung, Diese Projektnummer wird bereits verwendet!"
End Sub

Wenn ich das einbinde und als XLS öffne dann macht er genau das was ich brauche =),
Wenn ich es allerdings mit ods öffne beachtet er die formel garnicht, und gibt auch keine msgbox aus.

Nunja vielleicht habt ihr mal eine idee

Ryoho
Beiträge: 48
Registriert: Fr 26. Jul 2013, 08:36

Re: LibreOffice benutzerdefinierte Formeln

Beitrag von Ryoho » Di 30. Jul 2013, 09:10

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim bybox As Byte
If Target.Cells.Count > 1 Then Exit Sub
If Application.WorksheetFunction.CountIf(Range("B4:B15000"), Target) > 1 Then
bybox = MsgBox("Achtung, Diese Projektnummer ist bereits vergeben!", 0, "schalterabfrage")
If bybox = 1 Then
Target = ""
End If
End If
End Sub

So meine Formel ist nun Fertig Kann das Jemand in Star Basic umschreiben um es dann als .ods Speichern zu können? Ich sitz bestimmt wieder ewig am umschreiben =))

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: LibreOffice benutzerdefinierte Formeln

Beitrag von balu » Di 30. Jul 2013, 11:24

Hallo Ryoho,

schade das Du es so nicht hinbekommst wie erhofft.
Wenn ich es allerdings mit ods öffne beachtet er die formel garnicht, und gibt auch keine msgbox aus.
Was erwartest Du denn? Wie oft muss dir das denn noch gesagt werden, das Calc NICHT Excel ist?
Bei normalen Formeln besteht eine sehr große Chance das man Dateien untereinander austauschen kann. Aber bei Makros sieht das ganze schon anders aus, da gibt es viel mehr Hürden als zu vermuten sind. Ich gehe jetzt nicht zu sehr ins Detail, aber eine große Hürde ist z.B. das ansprechen und verarbeiten von Grafischebn Elementen, Buttons, Textfelder....

So meine Formel ist nun Fertig
Was für eine Formel? Ich sehe keine solche! Das was ich sehe ist ein Makro-Code.

Kann das Jemand in Star Basic umschreiben um es dann als .ods Speichern zu können?
Auch wenn es sich Hart anhört, so ist das nicht bös gemeint, sondern ein extrem nützlicher Tipp.
Lerne selber StarBasic zu programmieren.

Ich sitz bestimmt wieder ewig am umschreiben
Und je länger und intensiver man sich mit einer Materie befasst, umso mehr lernt man dazu und man ist dann nicht wegen jeder kleinigkeit auf Fremde Hilfe angewiesen.
Hier mal ein Paar nützliche Links.

Online Hilfe findest Du z.B. bei: Dannenhöfer. Für den schnellen und einfachen Einstieg geeignet.

Geh mal auf diese Seite von Volker Lenhardt. Dort gibts die deutsche Übersetzung von Andrew Pitonyak "OpenOffice.org Macros Explained". Musst ganz runter scrollen. Das ist schon umfangreicher und geht auch mehr in die Tiefe.

Wenn Du dich damit befasst, dürfte das umschreiben des Codes kein Problem mehr darstellen. Viel Erfolg :).



Gruß
balu

waringer
Beiträge: 1
Registriert: Do 3. Okt 2013, 11:58

Re: LibreOffice benutzerdefinierte Formeln

Beitrag von waringer » Do 3. Okt 2013, 12:25

Hallo,
ich habe ein Problem, was ich so in den ganzen Hilfen zu LO oder OO oder SO nicht gefunden habe.
Nun ich möchte einfach eine Funktion in Basic für Calc schreiben die mir den Text mehrerer Zellen verbindet.
Um herauszufinden wie das geht, möchte ich vorweg eine Testfunktion erstellen.

In einer Zelle in Calc lautet das dann:

=RGBACK(2;D5:D12)

Meine programmierte Funktion lautet:

function rgBack(z as integer, bereich) as variant
Msgbox ubound(bereich)
rgBack= bereich(z)
end function

Überlegungen:
Da ubound geht und 8 zurück gibt, vermutete ich das es sich vielleicht um ein array handeln könnte. Selbst wenn ich den bereich im Funktionskopf mit bereich () angebe gibt es keine Änderung.
Eventuell muss ich bei der Ausgabe angeben, das ich einen Text zurückgeben will.
Also...:
rgBack= bereich(z).string

aber das geht auch nicht.

Leider gibt es dazu keine Erklärung in der Hilfe.
Erfahrung im Programmieren habe ich aber nicht mit Open- oder Libreoffice.
Letzte Möglichkeit ist das Forum hier....

Was mache ich falsch ?

Viele freundliche Grüße
W.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2540
Registriert: Fr 10. Dez 2010, 10:01

Re: LibreOffice benutzerdefinierte Formeln

Beitrag von karolus » Do 3. Okt 2013, 15:22

Hallo
Was mache ich falsch ?
Zunächst hängst du deine Frage an ein anderes Thema statt ein neuen Beitrag zu eröffnen.

Code: Alles auswählen

function multikette( abereich as variant , trennzeichen as string )

dim astring( ubound(abereich,1)* ubound(abereich,2) - 1 )
 
for i = 1 to ubound(abereich,1)
	for si = 1 to ubound(abereich,2)			
      	astring(iii) = abereich(i,si)
      	iii = iii +1
	next si
next i


multikette = join(astring(),trennzeichen)

end function
Karolus
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

mikele
* LO-Experte *
Beiträge: 1932
Registriert: Mo 1. Aug 2011, 20:51

Re: LibreOffice benutzerdefinierte Formeln

Beitrag von mikele » Do 3. Okt 2013, 15:40

Hallo,

das Problem mit der Vermeidung doppelter Nummern ist schon interessant.
Das Problem bei der Gültigkeitsüberprüfung ist (meines Wissens), das die Gültigkeit für die Zelle vor der Eingabe festgelegt wird. Somit wäre die Gültigkeitsbedingung: alle Zahlen, außer den bereits eingegeben.
Das hat mich gereizt und einiges Kopfzerbrechen bereitet (weil es ja scheinbar so einfach ist).
Hier meine Lösung, unter der Annahme, dass als Projektnummern nur die Zahlen von 10000 bis 99999 zulässig sind.
Dateianhänge
gültigkeit_dynamisch.ods
(16.46 KiB) 216-mal heruntergeladen
Gruß,
mikele

Ryoho
Beiträge: 48
Registriert: Fr 26. Jul 2013, 08:36

Re: LibreOffice benutzerdefinierte Formeln

Beitrag von Ryoho » Mo 10. Feb 2014, 10:09

Das Klappt extrem gut! =)) Problem ist das er schwächelt. wenns um 6000 Zeilen geht. Ich bin überaus dankbar. Gibt es die Formel auch etwas Performance technisch besser?

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2540
Registriert: Fr 10. Dez 2010, 10:01

Re: LibreOffice benutzerdefinierte Formeln

Beitrag von karolus » Mo 10. Feb 2014, 11:23

Hallo
Ryoho hat geschrieben:Das Klappt extrem gut! =)) Problem ist das er schwächelt. wenns um 6000 Zeilen geht. Ich bin überaus dankbar. Gibt es die Formel auch etwas Performance technisch besser?
Deine "Performance" aka Reaktionzeit liegt gerade bei rund 5 Monaten :?

http://de.openoffice.info/viewtopic.php ... 94#p224116

Karolus
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten