Excel VBA-Macro in OO Basic

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

Moderator: Moderatoren

Witjas
Beiträge: 2
Registriert: Do, 05.10.2006 16:10

Excel VBA-Macro in OO Basic

Beitrag von Witjas »

Hi!

Ich habe da ein Problemchen, das mich tierisch nervt.
Was das Programmieren angeht bin ich Neuling.
Seit noch nicht allzu langer Zeit habe ich einen eigenen Laptop auf dem jetzt Linux läuft, vorher habe ich nur mit Windows gearbeitet.
Um Daten (eine MENGE Daten) nach Fehlern zu durchsuchen, habe ich mir in mühsamer Kleinstarbeit (Internet- und Foren-Recherche) ein kleines Macro in Excel geschrieben und war überglücklich als es endlich wie gewünscht funktionierte.
Tja nun hab ich Linux und Open Office und da funktioniert das Macro nun nicht und so einfach mit dem Umschreiben scheint es auch nicht zu sein.

Das mit den Daten ist dringend und es graut mir davor wieder tagelang damit zuzubringen rumzusuchen und rumzuprobieren....da staut sich währenddessen irre viel Frust an! :evil:

Bitte helft mir und bewahrt mich vor noch mehr Frust! Es ist auch wirklich nur ein ganz kleines Macro (den Könnern im Programmieren wird es wahrscheinlich die Fußnägel aufrollen :lol: ).


Macro:

Sub FehlerErkennung()
For Each Cell In Range("C5:C2438")
If Cell.Value < Cell.Offset(-1, 1).Value Then
Cell.Font.ColorIndex = 3
ElseIf Cell.Value > Cell.Offset(-1, 2).Value Then
Cell.Font.ColorIndex = 3
Else: Cell.Font.ColorIndex = 1
End If
Next
End Sub



Verzweifelte Grüße,

Witjas[/b]
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Beitrag von ykcim »

Hallo,

so sollte es gehen:

Code: Alles auswählen

Sub Fehlererkennung
  ocalc = thiscomponent
  osheet = ocalc.sheets(0)
  oCellRange = osheet.getCellRangeByName("C5:C2438")
  iErsteSpalte = oCellRange.rangeAddress.startColumn
  iErsteZeile = oCellRange.rangeAddress.startRow
  iLetzteSpalte = oCellRange.rangeAddress.EndColumn
  iLetzteZeile = oCellRange.rangeAddress.EndRow
  
  'Schleife über die Zeilen im Sheet
     For i = iErsteZeile to iLetzteZeile
      For m = iErsteSpalte to iLetzteSpalte
         oCell=osheet.getCellByPosition(m,i)
         oCell2=osheet.getCellByPosition(m-1,i+1)
         oCell3=osheet.getCellByPosition(m-1,i+2)
         MyValue=oCell.Value
         if MyValue < oCell2.Value then
          oCell.charcolor=&HFF0000
         elseif MyValue > oCell3.Value then
          oCell.charcolor=&HFF0000
         else
          oCell.charcolor=&H000000
         end if  
       next m
      next i   
end sub

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Witjas
Beiträge: 2
Registriert: Do, 05.10.2006 16:10

Beitrag von Witjas »

Hi!

Oh mann, danke! Das ist ja prima.

Ich habe eine kleinigkeit geändert:

statt:
...
oCell2=osheet.getCellByPosition(m-1,i+1)
oCell3=osheet.getCellByPosition(m-1,i+2)
...

das:
...
oCell2=osheet.getCellByPosition(m+1,i-1)
oCell3=osheet.getCellByPosition(m+2,i-1)
...

so hat es dann funktioniert.

:D


Das hat mir wirklich tagelange gruebelei erspart.

Du hast nicht zufällig Lust mir auch bei meiner Fehlerkorrektur zu helfen ?
:oops:
Die ist ungleich komplizierter...deshalb habe ich mich auch noch nicht rangetraut. :(


Tausend Dank nochmal!

Liebe Grüße,

Witjas
Antworten