Hallo Jollar,
als erstes solltest Du Dich in Foren gründlich umsehen um herauszufinden, in welchem Unterforum Du am ehesten Hilfe findest. Hier ist es das Unterforum: OOo Basic und Java. Extra für Makros eingerichtet.
Mit unprogrammierten Grüßen
Eddy
CALC: Gültigkeit
Moderator: Moderatoren
Re: Gültigkeit im Makro
Hallo Das Jollar,
Jürgen
@Mod: Thread bitte verschieben.
Hier ein Beispiel, welches ich mal im Web gefunden habe, aus meiner Grabbelkiste:- Zellen eine Gültigkeit zuweisen (genauer einen Zellbereich)
Code: Alles auswählen
sub Main
oDoc = ThisComponent
oSheet = oDoc.getSheets.getByIndex(0)
' example of VALIDATION TYPE: DECIMAL
CellRange = oSheet.getCellRangeByName("B1:B999")
Validation = CellRange.Validation
Validation.Type = com.sun.star.sheet.ValidationType.DECIMAL
Validation.ShowErrorMessage = True
Validation.ErrorMessage = "This is an invalid value!"
Validation.ErrorTitle = "ERROR"
Formula1 = "0.0"
Formula2 = "5.0"
Validation.ShowInputMessage = True
Validation.InputTitle = "RANGE IS:"
Validation.InputMessage = "Between " & Formula1 & " and " & Formula2
Validation.ErrorAlertStyle = com.sun.star.sheet.ValidationAlertStyle.STOP
Validation.setOperator com.sun.star.Sheet.ConditionOperator.BETWEEN
Validation.setFormula1 "0.0"
Validation.setFormula2 "5.0"
CellRange.Validation = Validation
' example of VALIDATION TYPE: LIST
Set CellRange = oSheet.getCellRangeByName("C1:C999")
Set Validation = CellRange.Validation
Validation.Type = com.sun.star.sheet.ValidationType.LIST
Validation.ShowErrorMessage = True
Validation.ErrorMessage = "Must be a value from the list!"
Validation.ErrorTitle = "ERROR"
Validation.ShowInputMessage = True
Validation.InputTitle = "INPUT VALUES:"
Validation.InputMessage = "Take a value from the list"
Validation.ErrorAlertStyle = com.sun.star.sheet.ValidationAlertStyle.STOP
Validation.setOperator com.sun.star.Sheet.ConditionOperator.EQUAL
For z = 1 To 10
oSheet.getCellByPosition(0, z).setString "ITEM" & z
Next
Validation.setFormula1 "$A$2:$A$11"
CellRange.Validation = Validation
end sub
@Mod: Thread bitte verschieben.
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
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Gültigkeit im Makro
Hallo,
Wie kommst Du denn darauf oder was willst (wolltest) Du damit bezwecken?
Tausche obere Zeile gegen folgende aus:
Das bestimmt den Bereich, in dem die Gültigkeit eingefügt wird.
Code: Alles auswählen
Set CellRange = oSheet.getRangeAddress
Tausche obere Zeile gegen folgende aus:
Code: Alles auswählen
Set CellRange = oSheet.getCellRangeByName("C1:C999")
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
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Gültigkeit im Makro
Gegenfrage: Hast du Dir überhaupt mal angesehen was auf dem ersten Tabellenblatt passiert ist, nachdem das Makro durchgelaufen ist?mal ein paar fragen zum besseren verständniss
Ich glaube eher nicht.
Diese Aufgabenstellung ist nicht in Deiner Eingangsfrage enthalten.Code: Alles auswählen
Set CellRange = oSheet.getRangeAddress
damit wollte eich eig dem makro sagen das es die zelle verändern soll die gerade selektiert ist aber das funktioniert wohl net so einfach xD
Der Zugriff auf die aktuelle Zelle funktioniert so.
Genau so ist es, kann man in diesem Beispiel aber ruhig weglassen.Validation.setOperator com.sun.star.Sheet.ConditionOperator.EQUAL
ist das die einstellung (=; <; <= usw)die frei wird
wenn man das was zugelassen werden soll auf Ganze Zahl, Datum, Zeit usw. setzt?
An dieser Frage sehe ich, dass Du dir die erste Tabelle nicht angesehen hast. Denn dann hättest Du festgestellt, dass in den Zellen von A2 bis A11 etwas in der Art steht.For z = 1 To 10
oSheet.getCellByPosition(0, z).setString "ITEM" & z
Next
ich kann mir nicht erklären wozu das dienen soll cO
Code: Alles auswählen
ITEM1
bis
ITEM10
Code: Alles auswählen
For z = 1 To 10
oSheet.getCellByPosition(0, z).setString "ITEM" & z
Next
Und schon wieder sind wir an dem Punkt, wo ich einfach frech behaupte, dass Du Dir das Ergebniss des Makrodurchlaufs in der Gültigkeit nicht angesehen hast.Validation.setFormula1 "$A$2:$A$11"
müsste da nich sowas wie INDEX() o.Ä. hin ? oder beinhaltet set Formula1 eine bestimmte formel
Sorry, mir ehrlich gesagt auch, da der Code nicht von mir ist.Set Validation = CellRange.Validation
CellRange.Validation = Validation
wo ist da der unterschied (ja das set), des entzieht sich mir irgendwie cO
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
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Gültigkeit im Makro
Moin,
ah jetzt ja ^^ ich war wirklich zu doof zum gucken
jedoch:
ich hab mir den code mal angepasst
Wenn ich diesen Code nun ausführe wird mir in der aktuell ausgewählten Zelle ein gültigkeitsbereich eingerichtet.
Wenn ich die nun entstandene Gültigkeit verändern will (also mir einen wert aus der liste aussuchen will),
zeigt mir die liste als einzigen Eintrag #NAME? an.
Wenn ich nun das gültigkeitsfenster (über Daten-> Gültigkeit) und ok klicke werden mir danch die richtigen werte angezeigt
PROBLEM:
aus INDEX('2.Tabellenblatt'.B1:C3;VERGLEICH(VERSCHIEBUNG(INDIREKT(ZELLE(""ADDRESS""));-2;-7);'2.Tabellenblatt'.A1:A3;0))
wird INDEX('2.Tabellenblatt'.B1:C3;vergleich(verschiebung(indirekt(zelle("ADDRESS"));-2;-7);'2.Tabellenblatt'.A1:A3;0))
Mit verwirrten Grüßen Das Jollar
ah jetzt ja ^^ ich war wirklich zu doof zum gucken
jedoch:
ich hab mir den code mal angepasst
Code: Alles auswählen
sub test2
oDoc = ThisComponent
oZelle=oDoc.getCurrentSelection()
Set CellRange = oZelle
Set Validation = CellRange.Validation
Validation.Type = com.sun.star.sheet.ValidationType.LIST
Validation.setFormula1 "INDEX('2.Tabellenblatt'.B1:C3;VERGLEICH(VERSCHIEBUNG(INDIREKT(ZELLE(""ADDRESS""));-2;-7);'2.Tabellenblatt'.A1:A3;0))"
CellRange.Validation = Validation
end sub
Wenn ich die nun entstandene Gültigkeit verändern will (also mir einen wert aus der liste aussuchen will),
zeigt mir die liste als einzigen Eintrag #NAME? an.
Wenn ich nun das gültigkeitsfenster (über Daten-> Gültigkeit) und ok klicke werden mir danch die richtigen werte angezeigt
PROBLEM:
aus INDEX('2.Tabellenblatt'.B1:C3;VERGLEICH(VERSCHIEBUNG(INDIREKT(ZELLE(""ADDRESS""));-2;-7);'2.Tabellenblatt'.A1:A3;0))
wird INDEX('2.Tabellenblatt'.B1:C3;vergleich(verschiebung(indirekt(zelle("ADDRESS"));-2;-7);'2.Tabellenblatt'.A1:A3;0))
Mit verwirrten Grüßen Das Jollar