Seite 1 von 3

per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 13:32
von clag
Hallo liebe Kenner und Könner,

Turtel47 mich auf ein Makro aufmerksam gemacht, welches er vor einiger Zeit generiert hat und meinem Wunsch "Bedingte Formatierungen" zu finden und kenntlich zu machen weitestgehend erfüllt.
viewtopic.php?f=2&t=18273#p76786
Ich habe nun zwei Änderungswünsche von denen einer wahrscheinlich recht leicht zu erfüllen ist, der andere wird vermutlich komplizierter.

1. anstelle des von Turtel47 zur Markierung angewendeten Rahmen hätte ich gern das der Zelle ein Kommentar ZB "auf diese Zelle wirkt eine BF" verpasst wird uns all Kommentare nach Beendigung des Makro angezeigt werden.
2. genial wäre es nun, wenn man die BF als Text in den Kommentar einfügen und anzeigen könnte

den Vorteil den ich dabei sehe ist, das man die Kommentare belassen kann und durch die Kommentar-Markierung in der Zelle hat man auch einen dauerhaften dezenten Hinweis auf eine BF
Der Rahmen von stört doch teilweise oder verändert die vorhandenen Rahmen und muss dann zurückgesetzt werden.

kann mir jemand konkret mit Code-Teilen helfen besonders Punkt 1 sollte doch durch einfachen Austausch der Zeile möglich sein

hier der Teil aus dem original Code von Turtel47, den man wohl für meine ersten Wunsch austauschen müsste

Code: Alles auswählen

       if BedFormat > 0 Then
       oBorder = oSheet.Tableborder 
       oBorderline = oBorder.TopLine
       oBorderline.innerlinewidth = 50
       oBorderline.color = RGB (36, 93, 219)
       oBereich.topBorder = oBorderline
       oBereich.leftBorder = oBorderline
       oBereich.rightBorder = oBorderline
       oBereich.bottomBorder = oBorderline
       'oBereich.cellbackcolor = RGB(236, 233, 216)'Hintergrundfarbe Zelle
Dank ahoi

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 13:43
von turtle47
clag hat geschrieben:1. anstelle des von Turtel47 zur Markierung angewendeten Rahmen hätte ich gern das der Zelle ein Kommentar ZB "auf diese Zelle wirkt eine BF" verpasst wird uns all Kommentare nach Beendigung des Makro angezeigt werden.
Guckst Du mal hier nach.

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 13:57
von clag
Hi Turtel47,

ja, genau bis dahin war ich auch schon gekommen aber mit keinem der beiden Code-Blöcke (so wie sie im Beispiel stehen, in deinen Code eingefügt) erreiche ich etwas :?
außer einer Fehlermeldung natürlich :lol:

da ist sicher noch "Feintuning" nötig bzw irgend welche Variablen oder Parameter muss man anpassen,
dabei laufe ich leider schon wieder auf Grund :(

Code: Alles auswählen

  oCell = oSheet.getCellByPosition(sp,ze)
  oCell.annotation.string="auf diese Zelle wirkt eine BF"
bringt auch nicht das gewünschte Ergebnis

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 14:15
von turtle47
clag hat geschrieben:aber mit keinem der beiden Code-Blöcke (so wie sie im Beispiel stehen, in deinen Code eingefügt) erreiche ich etwas
Zeige bitte mal den Code von Dir um zu sehen was da nicht passt.

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 14:32
von clag
Hi,
damit habe ich es zuletzt versucht

Code: Alles auswählen

Sub BF_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)   
   oBedingungen = oBereich.getPropertyValue( "ConditionalFormat" )
   BedFormat = oBedingungen.Count
   if BedFormat > 0 Then

  oCell = oSheet.getCellByPosition(sp,ze)
  oCell.annotation.string="auf diese Zelle wirkt eine BF" 
   
'   oBorder = oSheet.Tableborder
'   oBorderline = oBorder.TopLine
'   oBorderline.innerlinewidth = 150
'   oBorderline.color = RGB (36, 93, 219)
'   oBereich.topBorder = oBorderline
'   oBereich.leftBorder = oBorderline
'   oBereich.rightBorder = oBorderline
'   oBereich.bottomBorder = oBorderline
'   'oBereich.cellbackcolor = RGB(236, 233, 216)'Hintergrundfarbe Zelle
   end if
   next ze
   next sp
   msgbox "Die Überprüfung ist abgeschlossen!",64, "BF suchen"
End Sub
das läuft ohne Fehlermeldung ab, fügt aber auch keine Notizen ein ......

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 14:41
von turtle47
Ersetze mal den If-Bereich durch folgendes:
....
if BedFormat > 0 Then
oBereich.annotation.string="auf diese Zelle wirkt eine BF"
end if
...

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 14:57
von clag
hm..... da ändert sich scheinbar nichts

Bereich markiert
Makro aufrufen
MsgBox pop auf
ok

aber keine Notiz in/an den Zellen mit einer BF !?

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 14:59
von Karolus
Hallo
In dem Bereich sind noch keine Notizen eingetragen, daher müssen die auch initialisiert werden:

Code: Alles auswählen

if ...
oSheet.getAnnotations.insertNew(obereich.celladdress(), "Zelle enthält ein BF")
end if
Gruß Karo

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 15:05
von komma4
Bei mir funktioniert das Makro, auch ohne Änderung 8)

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 15:13
von clag
Hallo Karolus.

Tä tääh

ja das funzt prima :D


nun taucht für mich gleich die nächste Frage auf,
wie mach ich aus diesem Makro-recorder Code-Schnipsel

Code: Alles auswählen

dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "NoteVisible"
args2(0).Value = true

eine funktionierende Basiczeile die Notiz anzeigen ?




und besteht eine Chance meinen zweiten Wunsch zu realisieren also die BF auslesen und in die Notiz schreiben ?

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 15:21
von komma4
setze die folgende Zeile hinter die STRING-Anweisung

Code: Alles auswählen

       oCell.Annotation.setIsVisible( TRUE )

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 15:31
von komma4
clag hat geschrieben:und besteht eine Chance meinen zweiten Wunsch zu realisieren also die BF auslesen und in die Notiz schreiben ?
Ja, natürlich.

Die Bedingungen (oCell.Bedingungen) sind eine Aufzählung deren einzelne Elemente (oCell.Bedingungen.getByIndex(x)), die folgenden Eigenschaften haben (vom Typ):

Code: Alles auswählen

Formula1    string         
Formula2    string        
Operator     com.sun.star.sheet.ConditionOperator     
StyleName  string
Jetzt musst Du "nur noch" den Zellwert ermitteln und die Bedingung(en) durchgehen, welche zutrifft 8)

XRAY, Dein Freund, zeigt Dir das alles.

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 15:36
von clag
Hallo Komma4,

wenn ich die von dir vorgeschlagenen Zeile in das Makro einsetze, dann gibt es einen Basic Laufzeitfehler

ich habe schon verschiedene Schreibweisen probiert, das ändert aber auch nichts :(

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 15:39
von komma4
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"
steht nun

Code: Alles auswählen

  oCell.Annotation.setIsVisible( TRUE )
und funktioniert naürlich auch.

Re: per Makro einen Kommentar einfügen

Verfasst: Di, 06.07.2010 15:51
von clag
Hallo Komma4,

vielleicht setzt du etwas voraus was bei mir definitiv nicht existiert StarBasic Kenntnis oder Wissen
falls dein letzte Antwort irgendeine feinsinnige Information enthält, die kann ich folglich nicht aufnehmen :?

oder sollt es tatsächlich so sein, auf einem PC/ BS funktioniert ein Makro auf einem andern nicht ?