Brauche kurzes [HOW TO] für Basic Funktionen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Brauche kurzes [HOW TO] für Basic Funktionen

Re: Brauche kurzes [HOW TO] für Basic Funktionen

von lorbass » Fr, 01.04.2011 16:15

schnubber hat geschrieben:gibts in basic überhaupt den begriff funktion?
F1 > OpenOffice.org Basic > Index > Function-Anweisung

Gruß
lorbass

Re: Brauche kurzes [HOW TO] für Basic Funktionen

von schnubber » Fr, 01.04.2011 12:00

clag hat geschrieben:Hallo schnubber,

du kannst den/die Farbwerte in einer/mehreren Variablen ablegen und dann die Variablen einsetzen

Code: Alles auswählen

Dim myColor as String
mycolor = RGB(255,128,0)

'  myCell.CellBackColor = RGB(255,0,0)
   myCell.CellBackColor = mycolor
so würde ich das als Basic Lehrling machen :)

edit:
richtigerweise müsste die Variable wohl besser als long deklariert werden
denn das RGB(0,0,0) produziert ja einen Zahlenwert der "long" entspricht

Code: Alles auswählen

Dim myColor as Long
mycolor = RGB(255,128,0)

hi clag
Danke schön, gibts in basic überhaupt den begriff funktion?

Re: Brauche kurzes [HOW TO] für Basic Funktionen

von clag » Fr, 01.04.2011 11:17

Hallo schnubber,

du kannst den/die Farbwerte in einer/mehreren Variablen ablegen und dann die Variablen einsetzen

Code: Alles auswählen

Dim myColor as String
mycolor = RGB(255,128,0)

'  myCell.CellBackColor = RGB(255,0,0)
   myCell.CellBackColor = mycolor
so würde ich das als Basic Lehrling machen :)

edit:
richtigerweise müsste die Variable wohl besser als long deklariert werden
denn das RGB(0,0,0) produziert ja einen Zahlenwert der "long" entspricht

Code: Alles auswählen

Dim myColor as Long
mycolor = RGB(255,128,0)

Brauche kurzes [HOW TO] für Basic Funktionen

von schnubber » 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)

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

Nach oben