Seite 1 von 2

[gelöst] durch doppelklick "X" setzen

Verfasst: Mo, 24.02.2014 23:36
von Ulti
Hallo zusammen,

kann man durch einen doppelklick in ein Feld ein "X" setzen?

Gruß Ulti

Re: durch doppelklick "X" setzen

Verfasst: Di, 25.02.2014 07:49
von Karolus
Hallo

→Bearbeiten→Tabelle→Ereignisse→Doppelklick →→→

Code: Alles auswählen

sub schreib_x(ereignis)
ereignis.String = "X"
end sub
Karolus

Re: durch doppelklick "X" setzen

Verfasst: Di, 25.02.2014 15:30
von Ulti
es klappt super danke,

noch eine Frage

kann man, wenn auf ein anderes Feld (in einen bestimmten Bereich) ein X gesetzt wird, das alte X verschwinden lassen?

Gruß Ulti

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 17:26
von Ulti
bei dem Versuch ein X durch doppelklikc zu setzen und durch ein weiteren doppelklick zu entfernen, wurde folgendes versucht (aus dem Net).

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Range("A1:D5"), Target) Is Nothing Then
Cancel = True
Target = IIf(Target = "X", "", "X")
End If
End Sub

leider kommt als fehler: Basic Laufzeitfehler '1

hat jemand einen Plan?

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 17:30
von Halbwissender
Hi,

ich denke, dass es sich bei diesem Code um ein Excel-Makro handelt und das läuft meines Wissens nach nicht in OOo

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 17:41
von Ulti
schade,
gibts denn einen weg wie man bei Libre office per doppelklick ein x setzten und mit noch einem doppelkick es wieder entfernen kann?

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 20:34
von Ulti
Vielen dank,
ich habe verschiedene Versionen ausprobiert und es kommen immer wieder fehlermeldungen. Libre office 4.2.

mach ich was grundsätzliches Falsch?

REM ***** BASIC *****

Sub schreib_x(ereignis)
ereignis.String = "X" [Fehler: 91. Objektvariable nicht vergeben]
If ereignis.String ="X" Then
ereingis.String = ""
Else
ereignis.String = "X"

End If

end sub

sorry wenn der fehler zu offensihctlich ist, ich bin ein Makro-Noob und lese mihc gerade inmakro - Kochbuch ein (kennt jemand evtl. eine leicht verdauliche Page für Makros? Toll wäre eine BefehlsListe mit Makro Befehlen so wie früer für Dos..)

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 21:13
von Ulti
super klasse es klaptt, danke =)

letze Frage:
die X sollen in die Bereiche des Tabellenblattes kommen die nicht geschützt sind -> klappt auch
Aber alle geschützen zellen (die man ja nicht von hand bearbeiten kann) lassen sich mit einem doppelklick quasi "wegixen", sprich der inhalt wird durch x ersetzt und kann nicht rückgängig gemacht werden....

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 21:54
von Ulti
kann man irgendwie ins makro schreiben dass nur bestimmte bereiche der tabelle "geixt" werden können?
mit RANGE oder so?


@Gast
danke aber irgendwie check ich es nicht ganz.

Was wird unter "Bereich" gewählt?
unter Bereich kann man wählen zwischen

Alle Vorlagen
Benutzervorlagen
Verborgener Vorlagen

nur verstehe ich nicht wo ich den bereich in dem die X stehen können defienieren soll...

zuerst alle felder markieren-> klappt nicht,
ein Feld markieren und bedingte Formatieurng übertragen -klappt nicht
jeweils alle drei Vorlagen im Bereich, probiert,

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 22:28
von mikeleb
Hallo,

den Bereich kannst du auch im Makro einschränken:

Code: Alles auswählen

REM  *****  BASIC  *****

sub schreib_x(ereignis)

oDoc=thiscomponent
oBereich=oDoc.sheets(0).getCellRangeByName("a1:C5") 'Zellbereich A1:C5 in 1. Tabelle
if oBereich.queryIntersection(ereignis.rangeaddress).count=0 then exit sub

If ereignis.String = "X" Then
   ereignis.String = ""
Else
   ereignis.String = "X"
End If

end sub

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 22:42
von Karolus
Hallo

Besser

Code: Alles auswählen

oBereich = ereignis.Spreadsheet.getCellRangeByName("a1:C5")
Karolus

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 22:58
von Ulti
nachricht gelöscht

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 22:59
von mikeleb
Hallo,

@Karolus: cool, an sowas hatte ich zwar gedacht, aber keinen Schimmer, wie man es (so einfach!) umsetzt.
Zu meinem Verständnis:
ereignis liefert doch die Zelle (als Objekt) auf die der Doppelklick erfolgt. Wie "funktioniert" dann "Spreadsheet" und warum lässt es sich auf eine Zelle anwenden? Es müsste doch die gesamte Tabelle als Objekt liefern?

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 23:00
von Ulti
Ohhh vielen danke Karolus und Heritzp, ich versuche zu lernen

Re: durch doppelklick "X" setzen

Verfasst: Mi, 26.02.2014 23:25
von Ulti
wie müssen die Tabellenblätter genannt werden (Tabelle(8), heißt bei mir Q-FIS, Tabelle(9) heißt Selbstbild)
hab beide varianten probiert (dunkel markiert) irendwie klappt es einfach nicht
geht es so das man in zwei Tabellenblättern den Bereich festlegt?

REM ***** BASIC *****

Sub schreib_x(ereignis)

oDoc=thiscomponent
oBereich=oDoc.sheets(8).getCellRangeByName("D4:J32;o4:U40;Z4:AJ18")
if oBereich.queryIntersection(ereignis.rangeaddress).count=0 then exit sub


oBereich=oDoc.Selbstbild.getCellRangeByName("C11:H28;c31:H59;C72:L83")
if oBereich.queryIntersection(ereignis.rangeaddress).count=0 then exit sub


IF ereignis.String = "X" THen
ereignis.String = ""
ELSE
Ereignis.String = "X"
End If
End Sub