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
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 
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
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:
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