Seite 1 von 3
Zelleninhalt editieren
Verfasst: Do, 05.11.2009 13:49
von clag
Hallo Leutz,
ich möchte per Makro eine Zelle zum editieren öffnen, also praktisch ein F2 durch das Makro
wie muss man das in dem Makro ausehen ?
danke
Re: Zelleninhalt editieren
Verfasst: Do, 05.11.2009 13:59
von komma4
clag hat geschrieben:praktisch ein F2
und dann?
Was soll das bringen, den Tastendruck
F2 durch ein Makro zu ersetzen?
Re: Zelleninhalt editieren
Verfasst: Do, 05.11.2009 14:28
von clag
Hallo komma4,
komma4 hat geschrieben:Was soll das bringen, den Tastendruck F2 durch ein Makro zu ersetzen?
na einfach,
dass das Macro an der Stelle anhält, ich den Inhalt der Zelle komplett angezeigt bekomme und ggf editieren kann
und nach einem enter oder esc läuft das Macro weiter.
eine andere Idee wie man den Inhalt einer Zelle im Verlauf des Makro komplett anzeigen kann wäre mir auch recht !
Re: Zelleninhalt editieren
Verfasst: Do, 05.11.2009 14:58
von komma4
clag hat geschrieben:dass das Macro an der Stelle anhält, ich den Inhalt der Zelle komplett angezeigt bekomme und ggf editieren kann und nach einem enter oder esc läuft das Macro weiter.
Du kannst kein Makro anhalten, den Zellinhalt editieren und dann das Makro nach Tastendruck weiter laufen lassen.
Und nein: ich weiss nicht, wie Du den F2-Druck (nach Blattauswahl und Cursorpositionierung) simulieren kannst.
clag hat geschrieben:eine andere Idee wie man den Inhalt einer Zelle im Verlauf des Makro komplett anzeigen kann wäre mir auch recht !
Code: Alles auswählen
print ThisComponent.Sheets().getByName( "Tabelle1").getCellByPosition( 1, 2 ).getString()
Oder: bastel Dir einen Dialog, übernehme den Zellinhalt, zeige den Dialog (mit OK- und ABBRECHEN-Tasten) mit dem Zellinhalt an.
Re: Zelleninhalt editieren
Verfasst: Do, 05.11.2009 15:56
von clag
Hi komma4
schade .....
soweit ich das bis jetzt erkennen kann,
können Dialoge oder auch Print nicht mit Formaten in der Zelle umgehen und auch nicht mit den Zeilenumbrüchen,
sind also für die Anzeige längerer Zell Inhalte völlig ungeeignet !
der F2 edit modus hätte ein guter Behelf sein können
und was zeichnet dann der Macrorecorder hier auf
".uno:SetInputMode" (document, ".uno:SetInputMode", "", 0, Array())
das muss/sollte man doch irgendwie anwenden können ?
ich habe leider nur noch keine Idee wie man das im Makro verwenden könnte
Re: Zelleninhalt editieren
Verfasst: Do, 05.11.2009 16:02
von eBayer
ich denke, daß man alles in den deutschen und internationalen Foren finden kann.... wenn man sich nur die Mühe macht.
Ich bin absolut kein Calc-Spezi - aber Deine Fragen haben mich gereizt, mal zu versuchen, eine Antwort zu finden, die ich Dir beiliegend als Calc-Dokument schicke. Mit Doppelclick auf irgendeine Zelle wird Dir alles zu der Zelle angezeigt.
Ist nicht auf meinem Mist gewachsen - ich habe mir die Codefragmente aus dem US-Forum gefischt und hoffentlich sinnig zusammengebaut.
Ich denke, Du solltest wirklich erst einmal selbst versuchen, eine Lösung zu finden, bevor Du hier Stück für Stück das Forum rebellisch machst....... was ich Dir hiermit beweisen will.
Hier im Forum heißt es ja auch so schön "Hilfe zur Selbsthilfe"..... Also, Tipps kannst Du hier bekommen, nachdem Du gezeigt hast, daß Du Dich selbst bemüht hast - Aber Löungen mußt Du schon selber entwickeln.
Trotzdem.... schau Dir mal das beiliegende an!
Gruß eBayer
Re: Zelleninhalt editieren
Verfasst: Do, 05.11.2009 16:46
von eBayer
.......... und hier mit Dialog!
Re: Zelleninhalt editieren
Verfasst: Do, 05.11.2009 17:19
von clag
Hallo eBayer
erstmal Danke für die Code Schnippsel
die Anzeige für den Zellinhalt hat große Hoffnung geweckt bis ich versucht habe etwas zu markieren zum kopieren ging leider nicht
aber auch die Mouseclickhandler werde ich mir bestimmt genau ansehen
Wenn man weiß wonach man suchen muss ist das schon von Vorteil.
aber was meinst du damit
eBayer hat geschrieben:bevor Du hier Stück für Stück das Forum rebellisch machst.
meine Beträge/ Anfragen sind allesamt sachlich vielleicht enthalten sie nicht mehr so viel Watte wie zu meinem Einstieg hier
und das hier meinst du doch wohl nicht ernsthaft oder ?
eBayer hat geschrieben: nachdem Du gezeigt hast, daß Du Dich selbst bemüht hast -
es bleibt die Frage, kann man hiervon irgendetwas im Makro verwenden ?
".uno:SetInputMode" (document, ".uno:SetInputMode", "", 0, Array())
dies
SetInputMode scheint doch eine Anweisung/Funktion zu sein
Re: Zelleninhalt editieren
Verfasst: Do, 05.11.2009 17:35
von eBayer
Ich verfolge hier nur Deine Fragen und und die sehen schlicht so aus als ob Du Dir Häppchen für Häppchen die Arbeit von anderen machen lassen willst...... schnell ein paar Fragen in den Raum geworfen - es wird sich schon jemand finden.
Du solltest Dich wirklich entweder im WEB oder mit Hilfe von Fachliteratur zunächst schlau machen, bevor Du Dich mit komplexen Details, die ein ausgeprägtes Hintergrundwissen erfordern, auseinandersetzt. Kommst mir vor wie jemand, der einen Porsche geerbt hat, aber nur Mofa fahren kann - ist nicht bös gemeint! Aber fang einfach langsam an!!!!
mit wirklich freundlichem Gruß
eBayer
Re: Zelleninhalt editieren
Verfasst: Do, 05.11.2009 19:10
von clag
Hallo eBayer,
irgendwie kann ich dir nicht folgen
eBayer hat geschrieben:sehen schlicht so aus als ob Du Dir Häppchen für Häppchen die Arbeit von anderen machen
lernen heißt immer vom Wissen Anderer zu profitieren
eBayer hat geschrieben:schnell ein paar Fragen in den Raum geworfen
das ist in eine m Forum eben so ,oder soll ich jede Frage im Rotationsprinzip persönlich adressieren ?
und ein wissbegieriger Mensch hat nun mal viele Fragen
eBayer hat geschrieben:Du solltest Dich wirklich entweder im WEB
ja wo bin ich den hier
eBayer hat geschrieben:Kommst mir vor wie jemand, der einen Porsche geerbt hat, aber nur Mofa fahren kann
mit Excel VBA Limousine komm ich durchaus zurecht,
leider sind beim Komfort kein Vergleiche möglich, denn Calc erinnert mich dann eher an nen LJ 80 ohne Betriebsanleitung
die Hoffnung das einige Member hier viel über StarBasic wissen und auch preisgeben wollen ist der Grund warum ich meine Fragen hier Stelle,
ich hatte aber nichts über Fragen Kontingente gelesen .........
auch mit wirklich freundlichem Gruß
Re: Zelleninhalt editieren
Verfasst: Do, 05.11.2009 20:13
von komma4
komma4 hat geschrieben:clag hat geschrieben:praktisch ein F2
und dann?
Was soll das bringen, den Tastendruck
F2 durch ein Makro zu ersetzen?
Gegen (Deine) Fragen habe ich nichts.
Mich stört lediglich, wenn so ungenau gefragt wird.
Erst willst Du die Zellinformation editieren, dann stellt sich heraus, dass der Inhalt auch noch (unterschiedlich=nicht über Zellformate) formatiert ist ("Zeilenumbrüche").
Nun meine freundlichen Bemerkungen hierzu:
a) Bitte frage demnächt konkret: was hast Du (Daten in Calc?), was willst Du (formatierten Text anzeigen und bearbeiten) und wo findet das statt (Heim-/Netzcomputer, Betriebssystem, OOo-Version, Dateiformat, ...).
b) Calc ist eine Tabellenkalkulation, kein Satz-/Layoutprogramm. Formatierte Inhalte sind keine Kalkulationsgrundlage. Lagere formatierte Inhalte ggfs. in Writer-Dokumente aus.
c) wenn es um die Anzeige eines Zellinhaltes geht: warum ziehst Du die Zelle nicht so gross, bis alles sichtbar ist? Zommen (STRG+Mausrad drehen; STRG++)?
d) Du solltest inzwischen wissen, wie ein
dispatcher-Befehl aufgerufen werden kann. Das hilft Dir aber nicht weiter zum Ziel (s.o.: Formatierungen!)
Halte Dich daran: Daten und Präsentation (Aufbereitung, Ausdruck) zu trennen.
my 5¢
Re: Zelleninhalt editieren
Verfasst: Do, 05.11.2009 22:29
von clag
Hallo und n'Abend
komma4 hat geschrieben:Mich stört lediglich, wenn so ungenau gefragt wird.
dann wird mir möglicher weise von anderer Seite wieder vorgehalten ich wolle meine Arbeit abwälzen
ok; es hätte dann besser geheißen
ich möchte
in Calc per Makro eine Zelle zum editieren öffnen, also praktisch ein F2 durch das Makro
wie muss man das in dem Makro ausdrücken ?
ich hänge mal zwei Bilder an die darstellen was ich in Calc erreichen möchte
1. ein ganz alter Wunsch von mir die Zeile in der der Cursor steht soll sich farblich evtl auch in der Höhe von den anderen unterescheiden

- showtext-1row.png (51.97 KiB) 1156 mal betrachtet
2. wenn der Cusor in eine bestimme Spalte gesetzt wird soll diese Zelle automatisch vergrößert werden so das der ganz Inhalt angezeigt wird.
Das würde mit F2 Edit optimal funktionieren weil die Zelle nach unten auf geklappt wird, alternativ auch die Zeilenhöhe ändern und wieder zurücksetzen.

- showtext-2optimal.png (45.78 KiB) 1156 mal betrachtet
die Listener die ich bisher ausprobiert habe haben aber ein Problem mit mit hohen Key Wiederholraten der Tastatur und kommen dabei aus dem Takt und übergeben falsche Werte.
In den Listener eingebaute Waits werden dabei ebenfalls einfach übersprungen
Also eigentlich eine recht simple Aufgabe aber mit sehr vielen Problemen im Detail ... und da hänge ich seit eine Woche dran fest
komma4 hat geschrieben:d) Du solltest inzwischen wissen, wie ein dispatcher-Befehl aufgerufen werden kann. Das hilft Dir aber nicht weiter zum Ziel (s.o.: Formatierungen!)
hier überschätz du mich, ist mir leider noch nicht klar, aber ich werde jedes verständliche Wort dazu aufsaugen......
Re: Zelleninhalt editieren
Verfasst: Fr, 06.11.2009 00:06
von turtle47
Hallo Zusammen,
@ All
Ich weis, ich habe das erste Beispiel mit dem Listener gebracht. Nur muss ich dazu sagen, dass ich kein grosser Freund davon bin. Zumal ich gestern in einem Forum über einige
Bugs der Listner gelesen habe.
Leider sind auch die Beispiele von eBayer und mir davon betroffen. Wenn man z. B. bei gestartetem Listner in die Seitenansicht wechselt und diese wieder schliesst, dann ist der Listener deaktiviert und kann nicht wieder gestartet werden.
@ Clag
Sorry, aber jetzt muss ich auch noch in deine eh schon offene Wunde stossen.
Ich kann Deine Denkweise absolut nicht nachvollziehen. Warum missbrauchst Du eine Tabellenkalkulation für Aufgaben, die mit anderen Anwendungen viel einfacher zu handhaben sind???
Wenn ich das richtig sehe, dann pflegst Du die Inhalte von Michaels toller Website in Calc ein.
Warum dieser ganze Umstand und Aufwand? Man kann die gesamte Website als
Zip-Datei runterladen und auf dem eigenen Rechner entpacken. Eine Verknüpfung zu der enthaltnen Index.htm im Browser anlegen und schon hat man den gesamten Seiteninhalt auch offline zur Verfügung.

Zusätzliche Inhalte kann man dazu noch recht einfach einpflegen.
Mir fällt zu dem ganzen Thema nur noch folgendes ein:
Ein dreieckiges Rad ist besser als ein viereckiges. Es rumpelt einmal weniger je Umdrehung.
Guts Nächtle.
Jürgen
Re: Zelleninhalt editieren
Verfasst: Fr, 06.11.2009 00:22
von Stephan
dass das Macro an der Stelle anhält, ich den Inhalt der Zelle komplett angezeigt bekomme und ggf editieren kann
und nach einem enter oder esc läuft das Macro weiter.
und weshalb muß dabei das Makro angehalten werden?
Ein ganz simples do-loop im Sinne:
Code: Alles auswählen
x = ThisComponent.getCurrentSelection.getCellAddress
x1 = x.Row
x2 = x.Column
Do
x = ThisComponent.getCurrentSelection.getCellAddress
y1 = x.Row
y2 = x.Column
z = 0
If x1 <> y1 OR x2 <> y2 Then z = 1
Loop While z <> 1
sollte doch bereits genügen
1. ein ganz alter Wunsch von mir die Zeile in der der Cursor steht soll sich farblich evtl auch in der Höhe von den anderen unterescheiden
ist bereits im Forum gelöst worden BENUTZE DIE SUCHFUNKTION!
Das würde mit F2 Edit optimal funktionieren
und WARUM machst Du es dann nicht so?
Warum missbrauchst Du eine Tabellenkalkulation für Aufgaben, die mit anderen Anwendungen viel einfacher zu handhaben sind?
sehr gute Frage!
Gruß
Stephan
Re: Zelleninhalt editieren
Verfasst: Fr, 06.11.2009 00:57
von Karolus
Hallo
Ich stell hier nochmal etwas Code ein der zumindest hier so funktioniert wie ich Clags Aufgabenstellung verstanden habe.
Ob es sinnvoll ist so etwas über eine Tabellen
kalkulation abzuarbeiten soll er dann selbst entscheiden.
Code: Alles auswählen
Global CellString as String
Global mySheet As Object
Global oListener As Variant
Global oDocument As Variant
Global aktiv_chk as Integer
global lastrow as Integer
global lastcol as integer
Sub initializeListener
oListener = CreateUnoListener( "ClicListener_", "com.sun.star.view.XSelectionChangeListener" )
oDocument = ThisComponent
oDocument.getCurrentController.addSelectionChangeListener(oListener)
End Sub
Sub remove_Listener
'Den Listener zu deaktivieren funktioniert leider nicht.
'Dieser wird aber automatisch beendendet wenn das Dok geschlossen wird
'remove the listener from controller
'oDocument = ThisComponent
'oDocument.removeSelectionChangeListener(oListener)
End Sub
Sub ClicListener_selectionChanged(oEvent)
Dim Selection As Object
Dim bTest as Boolean
oSelection = oEvent.source.selection
if oSelection.supportsService ("com.sun.star.sheet.SheetCell") then
Doc = thisComponent
mySheet = Doc.Sheets(0)
CellString = oSelection.string
if lastrow <> oSelection.CellAddress.row or oSelection.CellAddress.Column <> lastCol then
mysheet.getcellbyposition(lastcol,lastrow).cellbackcolor = -1
end if
If len(CellString) > 10 Then
oselection.CellBackColor = &Hffffaa
''''''''''''↓Aufzeichnung F2''''''''''''''''''''''''''''''''''''''''''''''''''''''''#
doc_frame = doc.CurrentController.Frame '#
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") '#
dispatcher.executeDispatch(doc_frame, ".uno:SetInputMode", "", 0, Array()) '#
'''''''''''↑Ende der Aufzeichnug''''''''''''''''''''''''''''''''''''''''''''''''''''#
lastcol = oSelection.CellAddress.Column
lastrow = oSelection.CellAddress.row
end if
end if
End Sub
Gruß Karo