Seite 1 von 1

Re: [MAKRO]Zellbereich definieren-nur wo was drinn steht

Verfasst: Fr, 25.03.2011 10:44
von clag
Hallo Gast,

du zäumst das Pferd von hinten auf ;)

erst färbst du alles rot ein und die Treffer dann wieder weiß,
ist doch eigentlich logisch das dann auch die leeren Zellen rot bleiben.

Da solltest du vielleicht eine andere Strategie wählen oder nur Zellen rot färben die auch Inhalt haben.....

Re: [MAKRO]Zellbereich definieren-nur wo was drinn steht

Verfasst: Fr, 25.03.2011 10:48
von schnubber
clag hat geschrieben:Hallo Gast,

du zäumst das Pferd von hinten auf ;)

erst färbst du alles rot ein und die Treffer dann wieder weiß,
ist doch eigentlich logisch das dann auch die leeren Zellen rot bleiben.

Da solltest du vielleicht eine andere Strategie wählen oder nur Zellen rot färben die auch Inhalt haben.....
das will ich doch auch, aber der soll nur die zellen rot färben, die inhalt haben aber auch nur die färben die falsch sind
hast du ein vorschlag wie ich das besser machen könnte?
ich meine man könnte doch ne schleife einbauen dass er alle zellen durchgeht und die gefüllten markier und due leeren stehen lässt /ignoriert

Re: [MAKRO]Zellbereich definieren-nur wo was drinn steht

Verfasst: Fr, 25.03.2011 11:01
von Karolus
Hallo

Code: Alles auswählen

Sub ReplaceInCalc
       Dim oDoc As Object
       Dim oSheet As Object
       Dim oSearch As Object, oResult As Object         'Replace Descriptor (ScCellSearchObj)
       Dim oFound As Object, oFoundCursor as Object
       Dim n As Long
       
       oDoc = ThisComponent
       oSheet = oDoc.Sheets.getByIndex(0)
       oCellRange = oSheet.getCellRangeByName("A2:A1000")     
       
       
       oCellrange.CellBackColor = -1
       oSearch = oCellRange.createSearchDescriptor
       oSearch.SearchString = "^[a-z0-9_\-]+(\.[a-z0-9_\-]+)*@([0-9a-z][0-9a-z\-]*[0-9a-z]\.)+([a-z]{2,4}|museum)$"
       oSearch.SearchRegularExpression = TRUE
       oResult = oSheet.findAll(oSearch)
       For n = 0 To oResult.count - 1
           oFound = oResult(n)
           oFound.CellBackColor = RGB(255,0,0)
       Next 
End Sub
Tuts das?

Gruß Karo

Re: [MAKRO]Zellbereich definieren-nur wo was drinn steht

Verfasst: Fr, 25.03.2011 11:10
von schnubber
Ja, ABER er markier mir nur zellen mit inhal aber er markier nur die richtigen....der soll nur die falsch geschriebenen makieren :(
trotzden danke für die mühe , das ziel ist ja dass ich nur einmal den befehl gebe: ja nur die A spalte und nur die gefüllten , die falsch geschrieben sind markieren =)

Re: [MAKRO]Zellbereich definieren-nur wo was drinn steht

Verfasst: Fr, 25.03.2011 11:13
von clag
Hi,

da war Karolus schneller ..... :D

ich hätte dir zum probieren vorgeschlagen

ersetze dein

Code: Alles auswählen

oCellrange.CellBackColor = RGB(255,0,0)
zB durch

Code: Alles auswählen

for n =1 to 99
if  oSheet.getCellByPosition(0,n).string <> "" then oSheet.getCellByPosition(0,n).CellBackColor = RGB(255,0,0)
next

Re: [MAKRO]Zellbereich definieren-nur wo was drinn steht

Verfasst: Fr, 25.03.2011 11:18
von schnubber
clag hat geschrieben:Hi,

da war Karolus schneller ..... :D

ich hätte dir zum probieren vorgeschlagen

ersetze dein

Code: Alles auswählen

oCellrange.CellBackColor = RGB(255,0,0)
zB durch

Code: Alles auswählen

for n =1 to 99
if  oSheet.getCellByPosition(0,n).string <> "" then oSheet.getCellByPosition(0,n).CellBackColor = RGB(255,0,0)
next
ich versuchs...

Re: [MAKRO]Zellbereich definieren-nur wo was drinn steht

Verfasst: Fr, 25.03.2011 11:30
von clag
hi,

Code: Alles auswählen

Sub ReplaceInCalc
   Dim oDoc As Object
   Dim oSheet As Object
   Dim oSearch As Object, oResult As Object         'Replace Descriptor (ScCellSearchObj)
   Dim oFound As Object, oFoundCursor as Object
   Dim n As Long
   Dim oDataArry As Object
   
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByIndex(0)
   oCellRange = oSheet.getCellRangeByName("A10:A20")
'   oCellrange.CellBackColor = RGB(255,0,0)

for n = 1 to 99
if  oSheet.getCellByPosition(0,n).string <> "" then oSheet.getCellByPosition(0,n).CellBackColor = RGB(255,0,0)
next

   oSearch = oCellRange.createSearchDescriptor
   oSearch.SearchString = "^[a-z0-9_\-]+(\.[a-z0-9_\-]+)*@([0-9a-z][0-9a-z\-]*[0-9a-z]\.)+([a-z]{2,4}|museum)$"
   oSearch.SearchRegularExpression = TRUE
   oResult = oSheet.findAll(oSearch)
   For n = 0 To oResult.count - 1
       oFound = oResult(n)
       oFound.CellBackColor = RGB(255,255,255)
       REM oFoundCursor = oFound.Text.createTextCursorByRange(oFound)
        REM oFoundCursor.CharWeight = com.sun.star.awt.FontWeight.BOLD
   Next n

   End Sub
die Schleife prüft jede Zelle A2 - A100 auf ungleich "leer" und färbt bei wahr den Hintergrund rot

Re: [MAKRO]Zellbereich definieren-nur wo was drinn steht

Verfasst: Fr, 25.03.2011 11:31
von Karolus
Hallo

Code: Alles auswählen

Sub ReplaceInCalc
       Dim oDoc As Object
       Dim oSheet As Object
       Dim oSearch As Object, oResult As Object         'Replace Descriptor (ScCellSearchObj)
       Dim oFound As Object, oFoundCursor as Object
       Dim n As Long
       
       oDoc = ThisComponent
       oSheet = oDoc.Sheets.getByIndex(0)

       oStartCell = oSheet.getCellRangeByName("A2")   
       oCursor = oSheet.createCursorbyRange( oStartCell )
       oCursor.gotoEndOfUsedArea( True )  
       endrow = oCursor.rangeAddress.EndRow      
       oCellRange    = osheet.getcellrangebyPosition(0, 1, 0, endrow )


       oCellrange.CellBackColor = RGB(255,0,0)
       oSearch = oCellRange.createSearchDescriptor
       oSearch.SearchString = "^[a-z0-9_\-]+(\.[a-z0-9_\-]+)*@([0-9a-z][0-9a-z\-]*[0-9a-z]\.)+([a-z]{2,4}|museum)$"
       oSearch.SearchRegularExpression = TRUE
       oResult = oSheet.findAll(oSearch)
       For n = 0 To oResult.count - 1
           oFound = oResult(n)
           oFound.CellBackColor = -1
       Next 
End Sub
Dann eben so!

Karo

Re: Calc: Zellbereich definieren-nur wo was drinn steht

Verfasst: Fr, 25.03.2011 12:22
von schnubber
ich möchte mich bei allen beiteligten die mir versucht haben zu helfen herzlich bedanken Clag sein vorschlag die kleine zeile zu ersetzten hat funktioniert! DANKE DANKE DANKE