Tabellenereignisse inhalt geändert

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

Moderator: Moderatoren

tsw68
***
Beiträge: 81
Registriert: Mo, 21.03.2016 07:50

Tabellenereignisse inhalt geändert

Beitrag von tsw68 »

Hallo,

ich habe schonwieder ein Problem versuche schon 3 Tage lang 2 Makros in (Tabellenereignisse / inhalt geändert ) zu bekommen.

Code: Alles auswählen

sub Doppelpunkt (event)  	     
if not event.supportsService("com.sun.star.table.Cell") then exit sub 
if len(event.string)=0 then exit sub
 sCheck = event.AbsoluteName
 aNPart = Split(event.AbsoluteName,"$")
 sAllowedColums = "-AA-AB-AD-AF-AH-AJ-AL-AN-AP-AR-AT-AV-AX-"    
  if InStr(1,sAllowedColums,"-" & aNPart(2) & "-") then  
   iCheck = Val(aNPart(3))
   if iCheck > 4 and iCheck < 14 then   
    sText = trim(event.getstring)
    if len(sText)=2 then
     event.setstring(left(sText,1) & ":" & right(sText,1) )
     elseif len(sText)>2 and InStr(1,sText," ")>0 and len(sText) > InStr(1,sText," ") then
      sCont = split(sText," ")
      event.setstring(sCont(0)&":"&sCont(1))       
     elseif len(sText)= 3 then                                                                 
      idea1 = left(sText,2)&":"&right(sText,1)                                                
      idea2 = left(sText,1)&":"&right(sText,2)                                                 
      event.setstring( Dialog(idea1, idea2) )                                                  
     elseif len(sText)= 4 then                                                                 
      idea3 = left(sText,2)&":"&right(sText,2)                                                 
      idea4 = "X"                                                                              
      event.setstring(Dialog(idea3, idea4))                                                    
     else 
      event.setstring("")  
	endif
   endif
  endif   
End Sub

rem ----------------------------------------------------------------------

sub Ausgrauen
	tc0 = ThisComponent.Sheets(4)
	x = tc0.Drawpage.Forms.getByName("Formular").getByName("Schaltfläche 1")
	If tc0.getCellRangeByName("BA15").Value >= 12 Then 
			x.enabled = False
		Else
			x.enabled = True
	End If
end Sub
Diese 2 Makros möchte ich gerne in Tabellenereignisse / inhalt geändert unterbringen

Es gibt vieleicht auch eine andere möglichkeit habe aber keine arnung.
Bitte um Hilfe oder Ideen wie ich die 2 Makros gleichzeitig betreiben kann.

Danke !!

MFG tsw68
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Tabellenereignisse inhalt geändert

Beitrag von TrueColor »

z.B. über ein drittes Macro, welches die anderen beiden aufruft:

Code: Alles auswählen

Sub MyMacro3

    Call MyMacro1
    Call MyMacro2

End Sub
Edit: Naja, gleichzeitig ist da nicht, aber hintereinander.
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
tsw68
***
Beiträge: 81
Registriert: Mo, 21.03.2016 07:50

Re: Tabellenereignisse inhalt geändert

Beitrag von tsw68 »

Auf die Idee bin ich nicht gekommen,
werde ich später mal ausprobieren und berichten.
danke für die Idee!

MFG
tsw68
***
Beiträge: 81
Registriert: Mo, 21.03.2016 07:50

Re: Tabellenereignisse inhalt geändert

Beitrag von tsw68 »

Hi,

ein 3. Makro habe ich ausprobiert und kein erfolg.
kann mann die zwei Makros nicht in eins packen müste doch gehen.
Ich währe sehr Dankbahr .
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Tabellenereignisse inhalt geändert

Beitrag von TrueColor »

Das habe ich oben gemacht ;-)
Das Macro3 wird ans Ereignis gebunden und führt dann erst Macro1 und dann Macro2 aus. Hm... quasi wie eine Batchdatei.

Oh... ich sehe grad, du wertest in deinem ersten Macro das Event aus... da weiß ich nicht, wie man das durchreicht.

Du könntest aber auch dein zweites Macro vom ersten aufrufen lassen

Code: Alles auswählen

Sub Doppelpunkt(Event)

   [...]
   
   Call Ausgrauen

End Sub
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Tabellenereignisse inhalt geändert

Beitrag von Stephan »

1.
Ich verstehe nicht warum Du den Inhalt von "sub Ausgrauen" nicht einfach ans Ende des Makros "sub Doppelpunkt (event)" schreibst:

Code: Alles auswählen

sub Doppelpunkt (event)  	     
if not event.supportsService("com.sun.star.table.Cell") then exit sub 
if len(event.string)=0 then exit sub
 sCheck = event.AbsoluteName
 aNPart = Split(event.AbsoluteName,"$")
 sAllowedColums = "-AA-AB-AD-AF-AH-AJ-AL-AN-AP-AR-AT-AV-AX-"    
  if InStr(1,sAllowedColums,"-" & aNPart(2) & "-") then  
   iCheck = Val(aNPart(3))
   if iCheck > 4 and iCheck < 14 then   
    sText = trim(event.getstring)
    if len(sText)=2 then
     event.setstring(left(sText,1) & ":" & right(sText,1) )
     elseif len(sText)>2 and InStr(1,sText," ")>0 and len(sText) > InStr(1,sText," ") then
      sCont = split(sText," ")
      event.setstring(sCont(0)&":"&sCont(1))       
     elseif len(sText)= 3 then                                                                 
      idea1 = left(sText,2)&":"&right(sText,1)                                                
      idea2 = left(sText,1)&":"&right(sText,2)                                                 
      event.setstring( Dialog(idea1, idea2) )                                                  
     elseif len(sText)= 4 then                                                                 
      idea3 = left(sText,2)&":"&right(sText,2)                                                 
      idea4 = "X"                                                                              
      event.setstring(Dialog(idea3, idea4))                                                    
     else 
      event.setstring("")  
	endif
   endif
  endif 

	tc0 = ThisComponent.Sheets(4)
	x = tc0.Drawpage.Forms.getByName("Formular").getByName("Schaltfläche 1")
	If tc0.getCellRangeByName("BA15").Value >= 12 Then 
			x.enabled = False
		Else
			x.enabled = True
	End If
  
End Sub
2.
Wenn man die Makros nacheinander in einem dritten Makro aufrufen will und dabei das Event-Objekt mitgeben sollte das z.B. wie folgt gehen:

Code: Alles auswählen

Sub Main(event)
	Makro1(event)
	Makro2
End Sub

Sub Makro1(durchgereichter_event)
	Msgbox durchgereichter_event.AbsoluteName
End Sub

Sub Makro2()

End Sub


Gruß
Stephan
TrueColor
******
Beiträge: 542
Registriert: Do, 11.03.2010 11:23

Re: Tabellenereignisse inhalt geändert

Beitrag von TrueColor »

Stephan hat geschrieben: Fr, 21.04.2017 09:07 2.
Wenn man die Makros nacheinander in einem dritten Makro aufrufen will und dabei das Event-Objekt mitgeben sollte das z.B. wie folgt gehen:

Code: Alles auswählen

Sub Main(event)
	Makro1(event)
	Makro2
End Sub

Sub Makro1(durchgereichter_event)
	Msgbox durchgereichter_event.AbsoluteName
End Sub

Sub Makro2()

End Sub
Doch so einfach? Das hätte ich jetzt nicht vermutet. Auch wieder was gelernt. Danke dir!
System:
Arbeit: Windows 7 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3), LibreOffice 4.1.4.2
Home: Windows 10 (64 bit) + Apache OpenOffice 4.1.2 (AOO412m3)
tsw68
***
Beiträge: 81
Registriert: Mo, 21.03.2016 07:50

Re: Tabellenereignisse inhalt geändert

Beitrag von tsw68 »

Hi,

Jetzt war uch ein paar Tage nicht Zuhause und was muss ich sehen,
ihr wahrt richtig fleißig.
Habe ich sofort alles probiert und sage problem gelöst.
Super Gut und vielen Dank an euch, einfach spitze.

MFG tsw68
Gesperrt