Macro läuft nicht ;(
Moderator: Moderatoren
Macro läuft nicht ;(
Hallo Forum,
das folgende Macro ist ein ursprüngliches Excel-Macro und von Calc so importiert:
Rem Attribute VBA_ModuleType=VBADocumentModule
Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheets("Ausdruck").Cells(1, 3) = Cells(ActiveCell.Row, 2)
Worksheets("Ausdruck").Cells(2, 3) = Cells(ActiveCell.Row, 3)
Worksheets("Ausdruck").Cells(3, 3) = Cells(ActiveCell.Row, 4)
Worksheets("Ausdruck").Cells(5, 3) = Cells(ActiveCell.Row, 5)
Worksheets("Ausdruck").Cells(1, 7) = Cells(ActiveCell.Row, 7)
Worksheets("Ausdruck").Cells(2, 7) = Cells(ActiveCell.Row, 9)
Worksheets("Ausdruck").Cells(3, 7) = Cells(ActiveCell.Row, 10)
End Sub
Allerdings funktioniert es nicht ;(
Fehlermeldung: Basic-Laufzeitfehler. Sub- oder Function-Prozedur nicht definiert.
Was es tun soll ?
Im Tabellenblatt 'Ausdruck' sollen bestimmte Zellen mit den Werten der im
aktuell ausgewählten Tabellenblatt/Zeile automatisch gefüllt werden.
Sieht jemand, was da los ist ?
danke für Tipps und
beste gruesse,
heinetz
das folgende Macro ist ein ursprüngliches Excel-Macro und von Calc so importiert:
Rem Attribute VBA_ModuleType=VBADocumentModule
Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheets("Ausdruck").Cells(1, 3) = Cells(ActiveCell.Row, 2)
Worksheets("Ausdruck").Cells(2, 3) = Cells(ActiveCell.Row, 3)
Worksheets("Ausdruck").Cells(3, 3) = Cells(ActiveCell.Row, 4)
Worksheets("Ausdruck").Cells(5, 3) = Cells(ActiveCell.Row, 5)
Worksheets("Ausdruck").Cells(1, 7) = Cells(ActiveCell.Row, 7)
Worksheets("Ausdruck").Cells(2, 7) = Cells(ActiveCell.Row, 9)
Worksheets("Ausdruck").Cells(3, 7) = Cells(ActiveCell.Row, 10)
End Sub
Allerdings funktioniert es nicht ;(
Fehlermeldung: Basic-Laufzeitfehler. Sub- oder Function-Prozedur nicht definiert.
Was es tun soll ?
Im Tabellenblatt 'Ausdruck' sollen bestimmte Zellen mit den Werten der im
aktuell ausgewählten Tabellenblatt/Zeile automatisch gefüllt werden.
Sieht jemand, was da los ist ?
danke für Tipps und
beste gruesse,
heinetz
Einfacher ausgedrückt.
Hallo Forum,
vielleicht fange ich mal anders an:
Wie sieht ein Makro aus, dass den Wert der Zelle A1 in Tabellenblatt 'Liste' in B5 in Tabellenblatt 'Ausdruck' schreibt ?
danke für Hilfe und
beste gruesse,
hienetz
vielleicht fange ich mal anders an:
Wie sieht ein Makro aus, dass den Wert der Zelle A1 in Tabellenblatt 'Liste' in B5 in Tabellenblatt 'Ausdruck' schreibt ?
danke für Hilfe und
beste gruesse,
hienetz
Re: Macro läuft nicht ;(
Hi
oDoc = ThisComponent
ListeSheet = oDoc.sheets.getbyname("Liste")
AusdruckSheet = oDoc.sheets.getbyname("Ausdruck")
Zellenwert = ListeSheet.getcellrangebyname("A1").value
AusdruckSheet.getcellrangebyname("B5").value = Zellenwert
LG
Andreas
oDoc = ThisComponent
ListeSheet = oDoc.sheets.getbyname("Liste")
AusdruckSheet = oDoc.sheets.getbyname("Ausdruck")
Zellenwert = ListeSheet.getcellrangebyname("A1").value
AusdruckSheet.getcellrangebyname("B5").value = Zellenwert
LG
Andreas
Re: Macro läuft nicht ;(
Hi,
tausend Dank.
$ZELLE = "A"+aktuelle_markierung().zeile();
Zellenwert = ListeSheet.getcellrangebyname($ZELLE).value
tausend Dank für jeden Tipp und
beste gruesse,
heinetz
tausend Dank.
Und jetzt würde ich die '1' aus 'A1' gerne 'dynamisieren'. Etwa so:Zellenwert = ListeSheet.getcellrangebyname("A1").value
$ZELLE = "A"+aktuelle_markierung().zeile();
Zellenwert = ListeSheet.getcellrangebyname($ZELLE).value
tausend Dank für jeden Tipp und
beste gruesse,
heinetz
Re: Macro läuft nicht ;(
Hallo,
Schau Dir auch mal die Seite von Michael an. Dort findest Du viele wertvolle Hinweise.
Viel Erfolg.
Jürgen
Dann funktioniert folgendes:heinetz hat geschrieben:Und jetzt würde ich die '1' aus 'A1' gerne 'dynamisieren[
Code: Alles auswählen
oSelect = ThisComponent.CurrentSelection.getRangeAddress
oSelectAR = oSelect.StartRow +1
Zellenwert = ListeSheet.getcellrangebyname("A" & oSelectAR).value
Viel Erfolg.
Jürgen
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: Macro läuft nicht ;(
Hallo Forum,
so sieht's jetzt aus und funktioniert schon ganz gut:
... allerdings nur so:
1) Ich öffne das Dokument, markiere eine Zelle oder Zeile im Tabellenblatt 'Liste',
2) Ich öffne den Makro-Editor und führe es aus.
3) gewünschtes Ergebnis ist eingetreten.
Das ist natürlich zu umständlich. Ich möchte Schritt 2 automatisieren. Wie sorge ich nun
dafür, dass das Makro 'permanent' läuft bzw. immer angestossen wird, sobald ich im
Tabellenblatt 'Liste' irgendetwas markiere. So lief's als Excell-Makro.
danke für Tipps und
beste gruesse,
heinetz
so sieht's jetzt aus und funktioniert schon ganz gut:
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
oDoc = ThisComponent
ListeSheet = oDoc.sheets.getbyname("Liste")
AusdruckSheet = oDoc.sheets.getbyname("Ausdruck")
oSelect = ThisComponent.CurrentSelection.getRangeAddress
oSelectAR = oSelect.StartRow +1
Zellenwert = ListeSheet.getcellrangebyname("A" & oSelectAR).String
AusdruckSheet.getcellrangebyname("B5").String = Zellenwert
End Sub
1) Ich öffne das Dokument, markiere eine Zelle oder Zeile im Tabellenblatt 'Liste',
2) Ich öffne den Makro-Editor und führe es aus.
3) gewünschtes Ergebnis ist eingetreten.
Das ist natürlich zu umständlich. Ich möchte Schritt 2 automatisieren. Wie sorge ich nun
dafür, dass das Makro 'permanent' läuft bzw. immer angestossen wird, sobald ich im
Tabellenblatt 'Liste' irgendetwas markiere. So lief's als Excell-Makro.
danke für Tipps und
beste gruesse,
heinetz
Re: Macro läuft nicht ;(
Hallo Heinetz!
Antworten finden z.b. folgende Links.
viewtopic.php?f=2&t=22620
viewtopic.php?f=18&t=22723
Gruß
Charly
Wenn du willst, dass ein Makro automatisch gestartet wird, brauchst du einen "Listener". Suche nach diesem Wort im Forum und du wirst eine Mengeheinetz hat geschrieben: Das ist natürlich zu umständlich. Ich möchte Schritt 2 automatisieren. Wie sorge ich nun
dafür, dass das Makro 'permanent' läuft bzw. immer angestossen wird, sobald ich im
Tabellenblatt 'Liste' irgendetwas markiere. So lief's als Excell-Makro.
Antworten finden z.b. folgende Links.
viewtopic.php?f=2&t=22620
viewtopic.php?f=18&t=22723
Gruß
Charly
Re: Macro läuft nicht ;(
Jo,
das mit dem Listener habe ich nun auch schon mehrfach gelesen. Allerdings auch, dass
es je nach Event verschiedene Typen von Listenern gibt und welcher nun für mich der
richtige ist (beim markieren von irgendwas?), konnte ich nicht herausfinden. Ausserdem
habe ich nicht ganz verstanden, wo und wie ich den Listener in meinem Fall einbinden
muss.
beste gruesse,
heinetz
das mit dem Listener habe ich nun auch schon mehrfach gelesen. Allerdings auch, dass
es je nach Event verschiedene Typen von Listenern gibt und welcher nun für mich der
richtige ist (beim markieren von irgendwas?), konnte ich nicht herausfinden. Ausserdem
habe ich nicht ganz verstanden, wo und wie ich den Listener in meinem Fall einbinden
muss.
beste gruesse,
heinetz
Re: Macro läuft nicht ;(
Hallo Forum,
nun habe ich einen Listener gefunden, der eventuell für mein Makro passen könnte und ausprobiert:
Das funktioniert. Sobald ich mit der Maus etwas markiere, wird die MsgBox ausgegeben. Wenn
ich aber den Code des Makros statt dessen definiere, funktioniert das Makro nicht mehr richtig ;(
Was ist hieran falsch ?
Der Listener 'hört' nur im Tabellenblatt Ausdruck.
danke für Tipps und
beste gruesse,
heinetz
nun habe ich einen Listener gefunden, der eventuell für mein Makro passen könnte und ausprobiert:
Code: Alles auswählen
Sub initializeListener
oListener = CreateUnoListener( "ClicListener_", "com.sun.star.view.XSelectionChangeListener" )
oDocument = ThisComponent
oDocument.getCurrentController.addSelectionChangeListener(oListener)
End Sub
Sub ClicListener_selectionChanged(oEvent)
MSGBOX("Selektion")
end sub
ich aber den Code des Makros statt dessen definiere, funktioniert das Makro nicht mehr richtig ;(
Was ist hieran falsch ?
Code: Alles auswählen
Sub initializeListener
oListener = CreateUnoListener( "ClicListener_", "com.sun.star.view.XSelectionChangeListener" )
oDocument = ThisComponent
oDocument.getCurrentController.addSelectionChangeListener(oListener)
End Sub
Sub ClicListener_selectionChanged(oEvent)
oDoc = ThisComponent
ListeSheet = oDoc.sheets.getbyname("Liste")
AusdruckSheet = oDoc.sheets.getbyname("Ausdruck")
oSelect = ThisComponent.CurrentSelection.getRangeAddress
oSelectAR = oSelect.StartRow +1
Zellenwert = ListeSheet.getcellrangebyname("A" & oSelectAR).String
AusdruckSheet.getcellrangebyname("B5").String = Zellenwert
end sub
danke für Tipps und
beste gruesse,
heinetz
Re: Macro läuft nicht ;(
Hallo Heinetz!
Ich muss gestehen, dass ich bisher auch noch nicht mit einem "Listener" gearbeitet habe. Auf Grund deiner Frage habe ich mich jetzt mal daran gewagt und einen Code aus dem Forum, ich glaube es war einer von Jürgen =Turtle, entsprechend abgeändert.
Nachdem ich in meiner Beispieldatei Textwerte hatte, habe ich zum Übertrag den Befehl "string" verwendet. Bei Zahlen und Datums werte musst das durch "value" ersetzen.
Schau mal die Datei an, ob sie so funktioniert, wie du es brauchst.
Gruss
Charly
Ich muss gestehen, dass ich bisher auch noch nicht mit einem "Listener" gearbeitet habe. Auf Grund deiner Frage habe ich mich jetzt mal daran gewagt und einen Code aus dem Forum, ich glaube es war einer von Jürgen =Turtle, entsprechend abgeändert.
Nachdem ich in meiner Beispieldatei Textwerte hatte, habe ich zum Übertrag den Befehl "string" verwendet. Bei Zahlen und Datums werte musst das durch "value" ersetzen.
Schau mal die Datei an, ob sie so funktioniert, wie du es brauchst.
Gruss
Charly
- Dateianhänge
-
- Listener_Beispiel.ods
- (12.21 KiB) 112-mal heruntergeladen
Re: Macro läuft nicht ;(
Hallo Charly,
auf den ersten Blick würde ich sagen, es ist exakt das, was ich brauche. Tausend Dank !!!
Daran kann man hervorragend nachvollziehen, wie es geht.
beste gruesse,
heinetz
auf den ersten Blick würde ich sagen, es ist exakt das, was ich brauche. Tausend Dank !!!
Daran kann man hervorragend nachvollziehen, wie es geht.
beste gruesse,
heinetz