Worksheet code

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

shrabbels
Beiträge: 6
Registriert: Di, 02.02.2010 17:08

Worksheet code

Beitrag von shrabbels »

Hallo, ich bin neu hier und habe eine Frage.

Kann mir jemand sagen wie der korrekte Oo Makro-Code für folgenden Microsoft Excel VBA-Code lautet. Oo nimmt ihn einfach so nicht.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$10" Then
If Target.Value = 23 Then
Application.EnableEvents = False
Range("S17").Value = Range("S17").Value + 1
Application.EnableEvents = True
End If
End If
End Sub

Herzlichen Dank schon mal.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Worksheet code

Beitrag von komma4 »

Hehe, hast Du meine Antwort hier nicht gelesen - oder nicht verstanden?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
shrabbels
Beiträge: 6
Registriert: Di, 02.02.2010 17:08

Re: Worksheet code

Beitrag von shrabbels »

Hallo Ihr beiden und vielen Dank für eure Antworten.

Das mit der Formel funktioniert leider nicht, da fortlaufend gezählt werden soll. So steht immer eine 1 da.

Ehrlich gesagt ist mir das mit dem reinarbeiten zu aufwendig, da das Problem höchstwahrscheinlich das einzige sein wird, was es bei mir zu lösen gilt. Ich bin überhaupt beim Programieren ein blutiger Anfänger und stoße hier schon an die Grenzen meiner Fähigkeit und Lust. Aber mir scheint nichts anderes übrig zu bleiben...
shrabbels
Beiträge: 6
Registriert: Di, 02.02.2010 17:08

Re: Worksheet code

Beitrag von shrabbels »

oder ich muss mir doch das echte Excel besorgen.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Worksheet code

Beitrag von komma4 »

shrabbels hat geschrieben:Hallo Ihr beiden und vielen Dank für eure Antworten.
Ich bin nur einer ... siehst Du doppelt? 8)
shrabbels hat geschrieben:Das mit der Formel funktioniert leider nicht, da fortlaufend gezählt werden soll. So steht immer eine 1 da.
Dann machst Du etwas falsch* oder die Rahmenbedingungen** stimmen nicht!

* meine Ratschläge hier sind immer getestet und funktionieren demnach
** welche OOo-Version hast Du? für welches Betriebssystem?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Worksheet code

Beitrag von komma4 »

shrabbels hat geschrieben:So steht immer eine 1 da.
noch ne Idee: steht in S17 ein Text? Linksbündig ausgerichet?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
shrabbels
Beiträge: 6
Registriert: Di, 02.02.2010 17:08

Re: Worksheet code

Beitrag von shrabbels »

Ich habe Oo Version 3.1.

Die Formel funktionierte auch schon bei Excel nicht. Ich möchte das mir eine Zelle zählt, wie oft in einer anderen (deren Inhalt auch eine Formel ist) die 23 erscheint.

Nein, S17 ist noch leer. Mittig glaube ich.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Worksheet code

Beitrag von komma4 »

Sorry, verstehe nur Bahnhof:

wie oft eine 23 in einer Zelle erscheint?

Wenn S17 leer ist und in A10 der Wert 23 steht (auch aus einer Formel berechnet), dann ist 1 absolut korrekt.

Was mit Excel ist kann ich nicht sagen: hier geht es um OOo und ich habe keine Microsoft-Produkte.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
shrabbels
Beiträge: 6
Registriert: Di, 02.02.2010 17:08

Re: Worksheet code

Beitrag von shrabbels »

S17 = 23. A10 = 1, dann ändert sich etwas und es steht in S17 eine 42. A10 bleibt 1. Es ändert sich wieder etwas und in S17 steht wieder eine 23. Jetzt sollte in A10 eine 2 stehen. Kann es sein, dass das mit Oo nicht geht?!
bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

Re: Worksheet code

Beitrag von bst »

Abend auch,

Dein Change-Ereignis tut schon in Excel nicht das was Du möchtest.

S17 wird da nur erhöht wenn Du A10 manuell (oder per VBA) auf den Wert 23 veränderst, nicht wenn die Änderung durch eine Formel geschieht.

Von dem abgesehen sollte sich das Change-Ereignis von Excel in etwa so in OOo Calc realisieren lassen.

Um das automatisch zu starten musst Du AutoOnOpen noch mit dem Ereignis "Dokument öffnen" und AutoOnClose mit dem Ereignis "Dokument schließen" verknüpfen.

Jegliche Verbesserungen sind mehr als willkommen.

cu, Bernd
--

Code: Alles auswählen

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

Dim oModListener as object
Dim oModZelle as object

Sub AutoOnOpen
   	on error resume next
   	AutoOnClose
   
   	oModListener = CreateUnoListener("MyChange_", "com.sun.star.util.XModifyListener")
   	oModZelle = ThisComponent.sheets().getByName("Tabelle1").getCellRangeByName("A10")
   	oModZelle.AddModifyListener(oModListener)
End Sub

Sub AutoOnClose
	on error resume next
	oModZelle.removeModifyListener(oModListener)
End Sub

Sub MyChange_Modified(oEvent)
   oActZelle = ThisComponent.CurrentSelection
   if oActZelle.supportsService("com.sun.star.sheet.SheetCell") then
      if oActZelle.Value = 23 Then
         oCell = ThisComponent.sheets().getByName("Tabelle1").getCellRangeByName("S17")
         oCell.Value = oCell.Value + 1
      endif
   endif
End Sub
Antworten