Brauche kurzes [HOW TO] für Basic Funktionen
Verfasst: Fr, 01.04.2011 10:48
Hi .....langsamm werd ich zum dauerposter aber ich wage es trotzdem mal wieder zu fragen:
Aufgabe :
ich bräuchte eine kurze anweisung wie man in einem makro script (calc, basic) eine funktion für immer wiederkehrende prozesse schreibt, nur so kleines Beispiel
mit ein paar variablen, so dass wenn man eine variable ändert , ändert sich auch das ergebniss (wie in mathe) z.b a, b und c
(a=2 b=3) (c= a+b) c ist dann logischer weise 5 und wenn man b auf 5 ändert, dann ändert sich auch der rest (ergebniss) dann ist c=7
ich würde das dann auf mein script übertragen , ziel ist es wenn zb der script sagt in der spalte b= rot und in der spalte c= rot, und nu will ich aber dass die farbe gelb wird, müsste ich 2 mal mal die farbe ändern das bedeutet höhere wahrscheinlichkeit für fehler, es wird unübersichtlich und wenn man bedenken würde ich habe 10 funktionen (weil 10 verschiedene spalten) müsste ich 10 mal die farbe rot (mit der scriptsprache) umändern, oder ich habe 20 spalten usw usf.
ziel ist es dass sich dann das ergebniss automatisch ändert , weil in der funktion ein wert verändert wurde und ich müsste nicht mehr 10 mal die farbe umschreiben sondern ein mal in der funktion (hoffe ist verständlich worauf ich hinaus will) So erspahrt man sich viel quellcode und fehler , die übersichtlichkeit ist dadurch wesentlich besser.
das einfache beispiel würde ich dann auf mein quellcode übetragen hier ist er (zur besseren verständniss)
das auf dem code will ich selber anwenden, ich brauche nur einen kleinen schubser mit dem beispiel ganz oben, wie man überhaupt eine funktion in oo calc scripts schreiben würde (anhand dieser a+b = c sache)nur mal dieses leine beispiel als funktion, damit ich weis wie das logisch aufgebaut ist, danke voraus
grüße Schnubber
Aufgabe :
ich bräuchte eine kurze anweisung wie man in einem makro script (calc, basic) eine funktion für immer wiederkehrende prozesse schreibt, nur so kleines Beispiel
mit ein paar variablen, so dass wenn man eine variable ändert , ändert sich auch das ergebniss (wie in mathe) z.b a, b und c
(a=2 b=3) (c= a+b) c ist dann logischer weise 5 und wenn man b auf 5 ändert, dann ändert sich auch der rest (ergebniss) dann ist c=7
ich würde das dann auf mein script übertragen , ziel ist es wenn zb der script sagt in der spalte b= rot und in der spalte c= rot, und nu will ich aber dass die farbe gelb wird, müsste ich 2 mal mal die farbe ändern das bedeutet höhere wahrscheinlichkeit für fehler, es wird unübersichtlich und wenn man bedenken würde ich habe 10 funktionen (weil 10 verschiedene spalten) müsste ich 10 mal die farbe rot (mit der scriptsprache) umändern, oder ich habe 20 spalten usw usf.
ziel ist es dass sich dann das ergebniss automatisch ändert , weil in der funktion ein wert verändert wurde und ich müsste nicht mehr 10 mal die farbe umschreiben sondern ein mal in der funktion (hoffe ist verständlich worauf ich hinaus will) So erspahrt man sich viel quellcode und fehler , die übersichtlichkeit ist dadurch wesentlich besser.
das einfache beispiel würde ich dann auf mein quellcode übetragen hier ist er (zur besseren verständniss)
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 email_title as String
Dim email_regex as String
Dim email_column as Integer
Dim telephone_title as String
Dim telephone_regex as String
Dim telephone_column as Integer
email_title = "email"
email_regex = "^[a-z0-9_\-]+(\.[a-z0-9_\-]+)*@([0-9a-z][0-9a-z\-]*[0-9a-z]\.)+([a-z]{2,4}|museum)$"
telephone_title = "telephone"
telephone_regex = "[0-9 / ]"
'Dokument ansprechen
oDoc = ThisComponent
oSheet = oDoc.Sheets.getByIndex(0)
oSpalte = ThisComponent.Sheets(0).Columns(email_column)
oZeile = ThisComponent.Sheets(0).Rows(0)
'email spalte finden
oSearch = oZeile.createSearchDescriptor
oSearch.SearchString = "email"
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 'einzelne Fundzelle
email_column = ofound.celladdress.column
else 'mehrere benachbarte Zellen in ofound
for i = ofound.rangeaddress.startcolumn to ofound.rangeaddress.endcolumn
print i
next
end if
next
'emails färben
oSpalte = ThisComponent.Sheets(0).Columns(email_column)
oSearch = oSpalte.createSearchDescriptor
oSearch.SearchString = "."
oSearch.SearchRegularExpression = true
oResult = oSpalte.findAll(oSearch)
For n = 0 To oResult.count - 1
oFound = oResult(n)
oFound.CellBackColor = RGB(255,0,0)
Next
oSearch = oSpalte.createSearchDescriptor
oSearch.SearchString = email_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
'telefon spalte finden
oSearch = oZeile.createSearchDescriptor
oSearch.SearchString = "telephone"
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 'einzelne Fundzelle
telephone_column = ofound.celladdress.column
else 'mehrere benachbarte Zellen in ofound
for i = ofound.rangeaddress.startcolumn to ofound.rangeaddress.endcolumn
print i
next
end if
next
'telefon färben
oSpalte = ThisComponent.Sheets(0).Columns(telephone_column)
oSearch = oSpalte.createSearchDescriptor
oSearch.SearchString = "."
oSearch.SearchRegularExpression = true ' E-Mail sieht nicht wie RegEx aus !
oResult = oSpalte.findAll(oSearch)
For n = 0 To oResult.count - 1
oFound = oResult(n)
oFound.CellBackColor = RGB(255,0,0)
Next
oSearch = oSpalte.createSearchDescriptor
oSearch.SearchString = telephone_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
oZeile.cellbackcolor = RGB (255,255,255)
End Sub
grüße Schnubber