Seite 2 von 3

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 15:52
von Karolus
Hallo Winfried
komma4 hat geschrieben:Ich schrieb oben schon: bei mir funktioniert Dein Ursprungsmakro. Und hinter der Zeile

Code: Alles auswählen

  oCell.annotation.string="auf diese Zelle wirkt eine BF"
Diese Zeile funktioniert hier nur falls vorher schon Notizen eingetragen waren ( getestet mit OOo3.2.1 und mit Suse_OOo3.1 ) ?

Gruß Karo

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 15:54
von komma4
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.

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 16:02
von clag
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

Verfasst: Di, 06.07.2010 16:08
von komma4
dann nehme mal

Code: Alles auswählen

oBereich.Annotation.setIsVisible( TRUE )

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 16:30
von clag
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

Verfasst: Di, 06.07.2010 16:50
von komma4
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

Verfasst: Di, 06.07.2010 17:19
von clag
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

Verfasst: Di, 06.07.2010 17:39
von komma4

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

Verfasst: Di, 06.07.2010 17:57
von clag
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

Verfasst: Di, 06.07.2010 17:59
von Karolus
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

Verfasst: Di, 06.07.2010 18:14
von clag
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

Verfasst: Di, 06.07.2010 18:21
von Karolus
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

Verfasst: Di, 06.07.2010 18:49
von clag
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

Verfasst: Di, 06.07.2010 22:15
von clag
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

Verfasst: Di, 06.07.2010 22:34
von turtle47
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