per Makro einen Kommentar einfügen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: per Makro einen Kommentar einfügen

Re: per Makro einen Kommentar einfügen

von clag » Di, 06.07.2010 22:47

Hallo Turtel47

Boahh aey... das ist aber eine Menge Code :o

vielleicht kann ich da was weglassen, ;)
du ahnst es sicher schon ich möchte das mit deinem finde BF Code verstricken
mal sehen ob ich das auf die Reihe kriege ?

auf jeden Fall erst mal Danke dafür

Re: per Makro einen Kommentar einfügen

von turtle47 » Di, 06.07.2010 22:34

Hallo Clag,
clag hat geschrieben:wie muss das umgestrickt werden wenn ich nicht von der gesamten Tabelle,
sondern nur aus dem markierten Bereich den ersten Kommentar auf sichtbarkeit prüfen möchte ?

Code: Alles auswählen

Sub Kommentar_suchen
	oDoc = ThisComponent
	oSheet = ThisComponent.CurrentController.getActiveSheet()
	oZell = oDoc.getCurrentSelection()
	oZell.supportsService("com.sun.star.sheet.SheetCellRange")
	oSelect=ThisComponent.CurrentSelection.getRangeAddress
	oSelectColumn=ThisComponent.CurrentSelection.Columns
	oSelectRow=ThisComponent.CurrentSelection.Rows
	CountColumn=oSelectColumn.getCount
	CountRow=oSelectRow.getCount
	Start_Column=oSelect.StartColumn
	End_Column=oSelect.EndColumn
	Start_Row =oSelect.StartRow
	End_Row=oSelect.EndRow
	For sp = Start_Column to End_Column
	For ze = Start_Row to End_Row
	oSelectSR = oSelect.StartRow + 1
	oSelectEC = oSelectColumn.getByIndex(CountColumn-1).getName
	oBereich = oSheet.getCellByPosition(sp,ze)
		if  oBereich.Annotation.IsVisible = true then
			print "1. Kommentar  ist sichtbar in " & oBereich.AbsoluteName
			exit Sub
		end if
	next ze
	next sp
	msgbox "Es wurde kein sichtbarer Kommentar gefunden!",64, "Kommentar  suchen"
End Sub
Jürgen

Re: per Makro einen Kommentar einfügen

von clag » Di, 06.07.2010 22:15

Hallo Leutz,

entschuldigt bitte wenn ich das als Basic DAU so sage,
aber eure nachgeschalteten Sub's gefallen mir von der Wirkung her noch nicht so richtig

darum habe ich darüber gebrütet wie ihr da die Kommentare zählt und findet
und ich denke nun die sind nicht "adressiert" sondern durchnummeriert beginnend bei 0 ?
zumindest scheint mir das so nach meinen Versuchen

Code: Alles auswählen

If oKommentare.getByIndex( 0 ).getIsVisible() =  FALSE  Then
msgbox "hallo"
end if
zumindest begrüßt mich dieses stück Code wenn der Tabellenweit zuerst erstellte Kommentar sichtbar ist

wie muss das umgestrickt werden wenn ich nicht von der gesamten Tabelle,
sondern nur aus dem markierten Bereich den ersten Kommentar auf sichtbarkeit prüfen möchte ?

Re: per Makro einen Kommentar einfügen

von clag » Di, 06.07.2010 18:49

Hi

ja genauso habe ich es verstanden und auch getan mit dem beschriebenen Ergebnis

Code: Alles auswählen

    Sub toggleAnnotationDisplay

    oDok = ThisComponent
    oBlatt = oDok.CurrentController.getActiveSheet()
    oKommentare = oBlatt.Annotations
For i = 0 To oKommentare.Count - 1
      oKommentare.getByIndex( i ).setIsVisible( not oKommentare.getByIndex( i ).getIsVisible() )
Next i

'    For i = 0 To oKommentare.Count - 1
'       If oKommentare.getByIndex( i ).getIsVisible() =  FALSE  Then
'          oKommentare.getByIndex( i ).setIsVisible( TRUE )
'       Else
'          oKommentare.getByIndex( i ).setIsVisible( FALSE )
'       End If
'    Next i
    End Sub
oder hab ich hier etwas falsch gemacht ?

Re: per Makro einen Kommentar einfügen

von Karolus » Di, 06.07.2010 18:21

Hallo Clag
Die drei Zeilen ersetzen lediglich folgende sechs Zeilen

Code: Alles auswählen

For i = 0 To oKommentare.Count - 1
   If oKommentare.getByIndex( i ).getIsVisible() =  FALSE  Then
      oKommentare.getByIndex( i ).setIsVisible( TRUE )
   Else
      oKommentare.getByIndex( i ).setIsVisible( FALSE )
   End If
Next i
Das solltest du aber schon selbst herausfinden können.

Gruß Karo

Re: per Makro einen Kommentar einfügen

von clag » Di, 06.07.2010 18:14

hi Karo

dein Code funktioniert innerhalb der Markierung genau wie der von Komma4

aber er hat auch Einfluss auf Kommentare außerhalb der Markierung und blendet die auch ein bzw aus !?

eingebaut habe ich ihn an Stelle dessen was Komma4 zwischen For i und Next i stehen hatte.

Re: per Makro einen Kommentar einfügen

von Karolus » Di, 06.07.2010 17:59

Hallo
Spricht etwas gegen:

Code: Alles auswählen

...
For i = 0 To oKommentare.Count - 1
      oKommentare.getByIndex( i ).setIsVisible( not oKommentare.getByIndex( i ).getIsVisible() )
Next i
...
Gruß Karo

Re: per Makro einen Kommentar einfügen

von clag » Di, 06.07.2010 17:57

hi,
da bin ich jetzt etwas irritiert weil ich nicht erkennen kann was du beabsichtigt hast

folgendes passiert :
das Makro läuft bis zur MsgBox und die Kommentare sind eingeblendet
mit klick auf ok der MsgBox wird diese und alle Kommentare ausgeblendet,
ist das der korrekte von dir geplante Ablauf ?

Re: per Makro einen Kommentar einfügen

von komma4 » Di, 06.07.2010 17:39

Code: Alles auswählen

Sub toggleAnnotationDisplay

oDok = ThisComponent
oBlatt = oDok.CurrentController.getActiveSheet()
oKommentare = oBlatt.Annotations

For i = 0 To oKommentare.Count - 1
   If oKommentare.getByIndex( i ).getIsVisible() =  FALSE  Then
      oKommentare.getByIndex( i ).setIsVisible( TRUE )
   Else
      oKommentare.getByIndex( i ).setIsVisible( FALSE )
   End If
Next i

End Sub

Rufe das Makro einfach nach der letzten Anweisung (vor END SUB) auf, durch:

Code: Alles auswählen

call toggleAnnotationDisplay

Re: per Makro einen Kommentar einfügen

von clag » Di, 06.07.2010 17:19

Hallo Komma4,

da kommst du mir wie gerufen ich habe da an etwas ähnliches gedacht
du hast jetzt ein "Tabellenweit wirkendes" Makro generiert

ich hat überlegt eine weiter Abfrage in das Makro einzubauen

wenn auf BF (>0) überprüft wird und das erste >0 erkannt wurde
dann auf auf oCell.Annotation.setIsVisible( TRUE ) prüfen
wenn TRUE alle auf (FALSE) setzen
wenn FALSE alle auf (TRUE) setzen

wie müsste die Abfrage als BASIC-Codezeile formuliert werden ?
(kann man das überhaupt abfragen?)

dann könnte man durch wiederholtes aufrufen des Makro,
alle relevanten Notizen ein und ausblenden und die Anzeige gleichsetzen,
ggf auch die Inhalte aktualisieren (falls die Werte einmal aus den BF ausgelesen werden)

hast du da noch Zeit und Lust zu ?

Re: per Makro einen Kommentar einfügen

von komma4 » Di, 06.07.2010 16:50

clag hat geschrieben: aber nicht ausblenden oder einblenden kann
Man kann....mit Basic 8)

Code: Alles auswählen

Sub AnnotationDisplayOff

oDok = ThisComponent
oBlatt = oDok.CurrentController.getActiveSheet()
oKommentare = oBlatt.Annotations

For i = 0 To oKommentare.Count - 1
   oKommentare.getByIndex( i ).setIsVisible( FALSE )
Next i

End Sub
Die Variante zum Anschalten bekommst Du selbst hin?

Re: per Makro einen Kommentar einfügen

von clag » Di, 06.07.2010 16:30

Hallo .........

ja, das tut was ich möchte,
na da war ich ja schon dichte dran.... :)

ist vielleicht aber doch nicht so das Gelbe vom Ei, weil man die eingeblendeten Notizen
sowohl in der ganzen Tabelle als auch im markierten Bereich nur löschen aber nicht ausblenden oder einblenden kann :(

Gibt es tatsächlich keine Funktion alle Notizen ein/ausblenden hmmm ...

den zweiten Punkt lege ich mal auf Eis oder in die Hände von "ichhabespassamstarbasiccoden" Leuten :)
ich würde dabei eingehen s.o.

also herzlichsten Dank
an alle helfenden Sehstäbchen, Gehirnzellen, Tippfinger und deren Wirte
:lol:

Re: per Makro einen Kommentar einfügen

von komma4 » Di, 06.07.2010 16:08

dann nehme mal

Code: Alles auswählen

oBereich.Annotation.setIsVisible( TRUE )

Re: per Makro einen Kommentar einfügen

von clag » Di, 06.07.2010 16:02

Hi

hier ein Stück vom Code, damit die Glaskugel nicht so beansprucht werden muss :)

Code: Alles auswählen

 
   if BedFormat > 0 Then
   oSheet.getAnnotations.insertNew(obereich.celladdress(), "Zelle enthält ein BF" 
   oCell.Annotation.setIsVisible( TRUE )
'   oCell.Annotation.set IsVisible( TRUE )
'   oCell.Annotation.set IsVisible(TRUE)
'    oBereich.Annotations.set IsVisible ( TRUE )
   end if

Re: per Makro einen Kommentar einfügen

von komma4 » Di, 06.07.2010 15:54

Vielleicht setzt Du voraus, dass meine Glaskugel Deinen aktuell verwendeten Code zeigt.

Und ja: es ist möglich, dass unterschiedliche Versionen unterschiedlich reagieren.




@Karolus: wie im Footer geschrieben: 3.0.1 / Linux. in einem neuen Calc-Dokument, ohne dass vorher Kommentare eingetragen waren.

Nach oben