Seite 1 von 1

Tabellenereignisse inhalt geändert

Verfasst: Do, 20.04.2017 10:40
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

Re: Tabellenereignisse inhalt geändert

Verfasst: Do, 20.04.2017 11:07
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.

Re: Tabellenereignisse inhalt geändert

Verfasst: Do, 20.04.2017 11:16
von tsw68
Auf die Idee bin ich nicht gekommen,
werde ich später mal ausprobieren und berichten.
danke für die Idee!

MFG

Re: Tabellenereignisse inhalt geändert

Verfasst: Fr, 21.04.2017 06:43
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 .

Re: Tabellenereignisse inhalt geändert

Verfasst: Fr, 21.04.2017 08:07
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

Re: Tabellenereignisse inhalt geändert

Verfasst: Fr, 21.04.2017 09:07
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

Re: Tabellenereignisse inhalt geändert

Verfasst: Fr, 21.04.2017 11:03
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!

Re: Tabellenereignisse inhalt geändert

Verfasst: Mo, 24.04.2017 20:58
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