* Wie sieht der shell- Funktionsaufruf aus?
Code: Alles auswählen
Shell("C:\Programme\bildbearbeitung.exe ", 4, <Zellinhalt>)
* Wie sieht der Event-Handler aus für den Doppelklick ("Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ??")?
Du mußt einen MouseClickHandler-Listener:
http://api.openoffice.org/docs/common/r ... ndler.html
registrieren und dann auf die Ereignisse reagieren, z.B.:
Code: Alles auswählen
Global d_klick As Object
Sub start_listener()
d_klick = createUnoListener("dk_list_", "com.sun.star.awt.XMouseClickHandler")
ThisComponent.currentController.addMouseClickHandler(d_klick)
Msgbox "Bitte doppelklicken Sie eine Zelle in Spalte G"
End Sub
Sub stop_listener()
On Error Resume Next
ThisComponent.currentController.removeMouseClickHandler(d_klick)
On Error Goto 0
End Sub
Sub dk_list_disposing(par)
'
End Sub
Function dk_list_mousePressed(par) As Boolean
dk_list_mousePressed = False
End Function
Function dk_list_mouseReleased(par) As Boolean
On Error Goto err
If par.ClickCount = 2 AND ThisComponent.CurrentSelection.getCellAddress.Column = 6 Then
With ThisComponent
zeile = .CurrentSelection.getCellAddress.Row
tabelle = .CurrentSelection.getCellAddress.Sheet
inhalt = .Sheets(tabelle).getCellByPosition(6, zeile).String
'Shell("C:\Programme\bildbearbeitung.exe ", 4, inhalt)
Msgbox("Shell(""C:\Programme\bildbearbeitung.exe"", 4, " & CHR(34) & inhalt & CHR(34) & ")", 0, "Ausgeführt würde:")
End With
End If
err:
On Error Goto 0
dk_list_mouseReleased = False
End Function
Demonstrationsdatei hängt an.
* Wie schränke ich ein, dass nur die 7. Spalte einen Funktionsaufruf bewirken soll ("If Target.Column = 2 Then.."??)?
z.B. indem Du überprüfst das Du in dieser Spalte bist:
Code: Alles auswählen
If ThisComponent.CurrentSelection.getCellAddress.Column = 6 Then
'...
End If
Laut Forumauskunft besteht also ein Eventlistener besteht bei OO aus mind. 30 Zeilen Code
Wo steht das?
Der Umfang des Codes ist dadurch bestimmt was Du machen willst, der Mindestzeilenumfang eines Listenercodes ist jedoch theoretisch/formal: Anzahl der möglichen Ereignisse des Listeners plus 9, denn Listener-Registrierung und Abmeldung brauchen (mindestens) je 3 Zeilen ("Sub ...", Codezeile, "End Sub") plus 2 Zeilen für das immer vorkommene Ereignis "dispose" des Listeners plus je 2 Zeilen pro mögliches Listener-Ereignis des speziellen Listeners plus mindestens 1 Zeile code für irgendeine auszuführende Listener Aktion.
bei VBasic ist es eine
?
Wie denn? Das ist meiner Meinung nach nur mit VBA in einer Zeile möglich.
Gruß
Stephan