[Gelöst] Doppelte Seriennummern verhindern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [Gelöst] Doppelte Seriennummern verhindern

Re: Doppelte Seriennummern verhindern

von Sandy86 » Sa, 12.12.2015 21:07

Vielen, vielen Dank, F3K.
Klappt nun hervorragend! :mrgreen:

LG

Re: Doppelte Seriennummern verhindern

von F3K Total » Sa, 12.12.2015 14:39

Ups,
da war ein Fehler, es muss

Code: Alles auswählen

If result > 1 Then
und nicht

Code: Alles auswählen

If result >= 1 Then
sein
Alles zusammen, noch mit Löschfunktion:

Code: Alles auswählen

Function pruefen(CellValue As String, CellAddress As String) As Boolean
	oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
	oXCellRange = thiscomponent.Sheets.getbyname("Alle Teile_2").getCellRangeByName("$B$1:$B$10000")
	oXCell = thiscomponent.Sheets.getbyname("Alle Teile_2").getCellRangeByName(CellAddress)
	oXCell.formula = CellValue
	Dim args(1) As Variant
	args(0) = oXCellRange
	args(1) = oXCell.formula
	result = oFunctionAccess.callFunction("COUNTIF",args())
	If result > 1 Then
	    if msgbox ("Die Seriennummer ist bereits vorhanden!"&chr(13)&"Soll die Neueingabe gelöscht werden?",20,"Doppelter Eintrag") = 6 then
		    oXCell.formula = ""
        endif
        pruefen = False
	Else
		pruefen = True
	End If	
End Function
Gruß R

Re: Doppelte Seriennummern verhindern

von Sandy86 » Sa, 12.12.2015 12:54

Servus F3K,

danke für Deine Mühe.

Hast Du es selbst getestet?
Nach Übertragung Deines Makros zeigt es mir zwar nun endlich die Fehlermeldung an, welche aber weder die Eingabe verhindert, aber noch schlimmer, keinen Unterschied macht, ob die Seriennummer tatsächlich vorhanden ist oder nicht. -> siehe Screens
Snip 3.PNG
Snip 3.PNG (11.42 KiB) 5301 mal betrachtet
snip 3.1.PNG
snip 3.1.PNG (4.43 KiB) 5301 mal betrachtet
Wie gehe ich weiter vor?

Gruß
Sandra

Re: Doppelte Seriennummern verhindern

von F3K Total » Sa, 12.12.2015 08:08

Moin,
habe den Code etwas angepaßt.

Code: Alles auswählen

Function pruefen(CellValue As String, CellAddress As String) As Boolean
	oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
	oXCellRange = thiscomponent.Sheets.getbyname("Alle Teile_2").getCellRangeByName("$B$1:$B$10000")
	oXCell = thiscomponent.Sheets.getbyname("Alle Teile_2").getCellRangeByName(CellAddress)
	oXCell.formula = CellValue
	Dim args(1) As Variant
	args(0) = oXCellRange
	args(1) = oXCell.formula
	result = oFunctionAccess.callFunction("COUNTIF",args())
	If result >= 1 Then
		msgbox ("Die Seriennummer ist bereits vorhanden!",16,"Doppelter Eintrag")
		pruefen = False
	Else
		pruefen = True
	End If	
End Function
Zwei Dinge:
  • Du hast mit ...Sheets(0) auf das erste Tabellenblatt zugegriffen, deine Daten stehen auf dem zweiten
  • Bei mit funzte es bei neuen Zeilen erst, nachdem ich XCell.formula = CellValue zugefügt hatte, sprich die eingetippte Seriennummer wird per Makro in die Zelle geschrieben und dannach ausgewertet.
Gruß R

Re: Doppelte Seriennummern verhindern

von Sandy86 » Fr, 11.12.2015 20:15

Leute, schaut doch bitte mal drüber! :idea: :wink:

Lg

Re: Doppelte Seriennummern verhindern

von Sandy86 » Do, 10.12.2015 17:09

Hallo zusammen,

die Makrofunktion klingt ganz gut, habe alles genau so eingestellt wie bei Deiner Tabelle vorgegeben, Stefan,
dennoch liegt der Hund noch irgendwo begraben.

Makros stelle ich hier ein, richtig?
Snip2.PNG
Snip2.PNG (13.49 KiB) 5478 mal betrachtet
paljass als Gast hat geschrieben:Eventuell waäre eine Beispieldatei zum Nachgucken gut.
Ja, ich habe das Layout, um Verwirrungen bezüglich des obigen "Zellhintergrundfarbenproblems" auszumerzen, etwas verändert. Wundert Euch also bitte nicht.

Auf Daten/Gültigkeit könnt Ihr entsprechende Einstellungen nachvollziehen.
:?

Seite 2:
Eingabe_prüfen (1)TESTTABELLE.ods
(15.05 KiB) 118-mal heruntergeladen
Lg und danke im Voraus
Sandra

Re: Doppelte Seriennummern verhindern

von Stephan » Do, 10.12.2015 07:58

Da muss ich dir nach einem Test widersprechen! Ist die erste Bedingung erfüllt, bleiben die weiteren Bedingzngen unbebachtet.
Das heißt, wenn die Bedingung für "Rot" eintritt, wir die Zelle rot gefärbt, egal was danach noch für Bedingungen kommen.
In der Tat. Danke für Deine Aufmerksamkeit und den Hinweis.

Ich weiß jetzt garnicht warum ich das falsch im Kopf hatte.



Gruß
Stephan

Re: Doppelte Seriennummern verhindern

von Stephan » Mi, 09.12.2015 22:28

Ob die Bedingungen von oben nach unten abgearbeitet werden
ja, werden sie. Bei der gegeben Reihenfolge wird dadurch ein roter Hintergrund u.U. überschrieben. Also erste Bedingung an letzte Stelle und es sollte gehen


Gruß
Stephan

Re: Doppelte Seriennummern verhindern

von Stephan » Mi, 09.12.2015 22:26

Du kannst über Daten-Gültigkeit eine Function auslösen die die Prüfung macht, dazu in Daten Gültigkeit eintragen:

Zulassen: Ganze Zahl
Daten: gleich
Wert: 123456789

(dieser Eintrag dient nur dazu einen Zellwert anzugeben der garantiert nie vorkommen wird, d.h. die Eingabe ist letztlich beliebig solange der Wert nur nie in Realität eingeben wird)

und bei Register "Fehlermeldung":

Aktion: Makro

und folgende Function angeben:

Code: Alles auswählen

Function pruefen(CellValue As String, CellAddress As String) As Boolean
	oFunctionAccess = createUnoService( "com.sun.star.sheet.FunctionAccess" )
	oXCellRange = thiscomponent.Sheets(0).getCellRangeByName("$B$1:$B$2500")
	oXCell = thiscomponent.Sheets(0).getCellRangeByName("B1").Value


	Dim args(1) As Variant
	args(0) = oXCellRange
	args(1) = oXCell

	result = oFunctionAccess.callFunction("COUNTIF",args()) 
	If result >= 1 AND VAL(CellValue) = oXCell Then
		Msgbox "schon vorhanden"
		pruefen = False
	Else
		pruefen = True
	End If	
End Function

Gruß
Stephan
Dateianhänge
Eingabe_prüfen.ods
(9.35 KiB) 91-mal heruntergeladen

Re: Doppelte Seriennummern verhindern

von miesepeter » Mi, 09.12.2015 21:33

Sandy86 hat geschrieben:verhindert dieser denn komplett die Doppeleintragung, inklusive Fehlermeldung, oder werden hier lediglich alle Duplikate rot markiert?

Evtl. steht die eine Bedingung den anderen zweien (welche rein dem Zweck der Formatierung des Zellhintergrunds dienen - Screenshot) widersprüchlich gegenüber?
Hallo,

es werden nur die Duplikate rot markiert, es wird keine Gültigkeit bewirkt. Bei meinem Test erbrachte die Formel richtige Darstellung.
Ob die Bedingungen von oben nach unten abgearbeitet werden, kann ich nicht sagen, das kannst du aber doch leicht selbst feststellen (dein Screenshot sagt: funktioniert nicht).

Inwieweit man die Funktion der Gültigkeit einbringt, da bin ich überfragt.
Hast du mal bei Gültigkeit > Kriterien :: Zellbereich nachgesehen, dort kann auch eine Formel eingegeben werden...

Es wird sich schon jemand finden, der mehr dazu ausführen kann...

Ciao

Re: Doppelte Seriennummern verhindern

von Sandy86 » Mi, 09.12.2015 20:58

Hallo Miesepeter, danke für deine schnelle Antwort.
miesepeter hat geschrieben:Hallo und ja ich möchte -

du könntest es mit einer bedingten Formatierung realisieren. Die bedingte Formatierung wird in Zelle B1 eingegeben und dann mit dem Formatübertragungspinsel auf alle anderen Zellen der Spalte B übertragen. (Mischung absolute und relative Adressierung - siehe Screenshot.)

Ciao
Leider funktioniert dein Lösungsweg bei mir nicht. Verhindert dieser denn komplett die Doppeleintragung, inklusive Fehlermeldung, oder werden hier lediglich alle Duplikate rot markiert?

Evtl. steht die eine Bedingung den anderen zweien (welche rein dem Zweck der Formatierung des Zellhintergrunds dienen - Screenshot) widersprüchlich gegenüber?
Snip1.PNG
Snip1.PNG (23 KiB) 5687 mal betrachtet
LG

Re: Doppelte Seriennummern verhindern

von miesepeter » Mi, 09.12.2015 20:08

Hallo und ja ich möchte -

du könntest es mit einer bedingten Formatierung realisieren. Die bedingte Formatierung wird in Zelle B1 eingegeben und dann mit dem Formatübertragungspinsel auf alle anderen Zellen der Spalte B übertragen. (Mischung absolute und relative Adressierung - siehe Screenshot.)

Ciao
BedingteFormatierung.png
BedingteFormatierung.png (39.9 KiB) 5715 mal betrachtet

[Gelöst] Doppelte Seriennummern verhindern

von Sandy86 » Mi, 09.12.2015 18:54

Hallo zusammen,

mal wieder fuchst es bei meiner Tabelle. :roll:

In meiner Calc unter Spalte B1:B2500 sollen Seriennummern aufgelistet werden, welche freilich nicht doppelt vorkommen dürfen.
Ich vermisse eine Funktion wie bei Excel, worunter ich unter Daten-Gültigkeit eine Formel wie =zählenwenn($B$1:$B$2500;B1)=1 o.ä. eingebe, welche mir dann eine Fehlermeldung (z.B. Seriennummer bereits vorhanden!) ausspuckt.

Möchte mir da jemand weiter helfen? :-?

Lg Sandra

Nach oben