Calc: Zellbereich definieren-nur wo was drinn steht

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

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

Beitrag 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.....
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
schnubber
**
Beiträge: 33
Registriert: Fr, 25.03.2011 09:46

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

Beitrag 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
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

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

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
schnubber
**
Beiträge: 33
Registriert: Fr, 25.03.2011 09:46

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

Beitrag 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 =)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

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

Beitrag 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
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
schnubber
**
Beiträge: 33
Registriert: Fr, 25.03.2011 09:46

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

Beitrag 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...
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

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

Beitrag 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
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

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

Beitrag 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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
schnubber
**
Beiträge: 33
Registriert: Fr, 25.03.2011 09:46

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

Beitrag 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
Antworten