[calc] Befehl zum überspringen eines aufrufs?[nich erledigt]
Verfasst: Mi, 06.04.2011 14:12
hey ho forum habn folgendes problem:
mein makro script sucht eine zeile nach bestimmten begriffen(spaltenname) wenn er die gefunden hat , macht das makro jeweils verschiedene prozeduren un der spalte wo der der begriff gefunden wurde
das problem ist, wenn in der zeile der gewünschte begriff(spaltenname) nicht gefunden wird (zb weil die spalte mit diesem namen nicht mehr existiert), bricht mein makro zusammen und kann nicht weiter arbeiten (fehlermeldung)
in diesem fall ist der spaltenname "country" nicht vorhanden
meine idee ist die if schleife zu bearbeiten und da ein befehl rein zubauen der sagt: wenn du den gewünschten begriff country nicht findest dann überspringe den aufruf und mach mit dem nächsten aufruf weiter, wenn du ihn findest dann mach den aufruf.
hier der code (hab ihn so gebaut dass es nur für eine spalte gilt, weil sonst wäre er zu lang weil ich 14 spalten habe xD):
als beispiel mals so erklärt:
1. tabelle die spalte namens "country" gibts
2. tabelle die spalte namens "country" gibts nicht
script arbeitet in beiden tabellen
ich weis net wie ich den befehl zum überspringen 7auslassen des aufrufs schreiben soll
danke voraus
gruß schnubber
mein makro script sucht eine zeile nach bestimmten begriffen(spaltenname) wenn er die gefunden hat , macht das makro jeweils verschiedene prozeduren un der spalte wo der der begriff gefunden wurde
das problem ist, wenn in der zeile der gewünschte begriff(spaltenname) nicht gefunden wird (zb weil die spalte mit diesem namen nicht mehr existiert), bricht mein makro zusammen und kann nicht weiter arbeiten (fehlermeldung)
in diesem fall ist der spaltenname "country" nicht vorhanden
meine idee ist die if schleife zu bearbeiten und da ein befehl rein zubauen der sagt: wenn du den gewünschten begriff country nicht findest dann überspringe den aufruf und mach mit dem nächsten aufruf weiter, wenn du ihn findest dann mach den aufruf.
hier der code (hab ihn so gebaut dass es nur für eine spalte gilt, weil sonst wäre er zu lang weil ich 14 spalten habe xD):
Code: Alles auswählen
sub spaltenDurchsuchen
'variablen Festlegen
Dim oDoc as Object
Dim oSheet as Object
Dim oSearch as Object, oResult as Object
Dim oFound as Object
Dim n as Long
Dim oSpalte as Object
Dim oZeile as Object
Dim column_index as Object
Dim country_title as String
Dim country_regex as String
Dim country_column as Integer
Dim mycolor as Long
'Dokument ansprechen
oDoc = ThisComponent
oSheet = oDoc.Sheets.getByIndex(0)
oSpalte = ThisComponent.Sheets(0).Columns
oZeile = ThisComponent.Sheets(0).Rows(0)
mycolor = RGB(255,0,0)
country_title = "country"
country_regex = "[a-zA-ZÄÜÖäüöß \-\\/]{1,}"
leer_regex = "."
'country spalte finden
country_column = findeSpalte("country",oZeile)
'country spalte färben
faerbeSpalte(mycolor,leer_regex,country_column,country_regex)
oZeile.CellBackColor = RGB(255,255,255)
End Sub
Function findeSpalte(suchbegriff As String, oZeile As Object)
oSearch = oZeile.createSearchDescriptor
oSearch.SearchString = suchbegriff
oSearch.SearchRegularExpression = true
oResult = oZeile.findAll(oSearch)
For n = 0 To oResult.count - 1
oFound = oResult(n)
if oFound.supportsservice("com.sun.star.table.Cell") then
findeSpalte = ofound.celladdress.column
end if
next
End Function
Sub faerbeSpalte(mycolor as Long,leer_regex as String,column as Integer,regex as String)
oSpalte = ThisComponent.Sheets(0).Columns(column)
oSearch = oSpalte.createSearchDescriptor
oSearch.SearchString = leer_regex
oSearch.SearchRegularExpression = true
oResult = oSpalte.findAll(oSearch)
For n = 0 To oResult.count - 1
oFound = oResult(n)
oFound.CellBackColor = mycolor
Next n
oSearch = oSpalte.createSearchDescriptor
oSearch.SearchString = regex
oSearch.SearchRegularExpression = TRUE
oResult = oSpalte.findAll(oSearch)
For n = 0 To oResult.count - 1
oFound = oResult(n)
oFound.CellBackColor = RGB(255,255,255)
Next n
End Sub
1. tabelle die spalte namens "country" gibts
2. tabelle die spalte namens "country" gibts nicht
script arbeitet in beiden tabellen
ich weis net wie ich den befehl zum überspringen 7auslassen des aufrufs schreiben soll
danke voraus
gruß schnubber