Seite 1 von 1

Makro

Verfasst: Mo, 07.07.2014 10:50
von RealmReborn
Ich brauch ma wieder Hilfe bei Makro erstellen. Es soll an das Makro anknüpfen was für Färben der Zeilen da ist.

Code: Alles auswählen

sub Markieren
raus = 10
Spalte = ThisComponent.Sheets().getByName("Test")
i = 4
Do
  tmp = Spalte.getCellByPosition(12,i).FormulaLocal
  If tmp = "x" Then
      for j = 0 to 11
       Spalte.getCellByPosition(j,i).CellBackColor = RGB(220,200,0)REM;Blau,Grün,Rot
     Next j
     raus = 10
   Else
     raus = raus - 1
  End If
  i = i + 1
Loop While raus > 0
end sub
Das Makro soll dann in der Zeile zB das Datum überprüfen ob dieses in Tabelle:Test2 vorhanden sind und falls ja diese löschen.
Ich hab da kein Plan wie ich das bewerkstelligen kann. Ich hab schon gegoogelt aber das meiste is nur Löschen von Zeilen oder suchen nach bestimmten Textabschnitten.
Aber da ja meins immer n anderen Text bzw Zahl/Datum enthält kann ich das nicht nutzen.

Zum Löschen wäre wohl:

Code: Alles auswählen

oRows.removeByIndex
nötig.

Ich hab ne Beispieldatei angehängt.
Sry für den Fall das ich zu viel um Hilfe frag -.-"
Ich bedanke mich schon im Vorraus für Hilfe.

Re: Makro

Verfasst: Mo, 07.07.2014 14:37
von balu
Hallo RealmReborn,

erst mal einen Hinweis.
Du hast in der Beispieldatei die Sub

Code: Alles auswählen

Sub MarkierenUndLöschen
benannt, und das führt zu Problemem. Denn in dem Sub-Namen ist ein Sonderzeichen, nämlich der deutsche Umlaut das kleine ö. Sonderzeichen und Umlaute solltest Du vermeiden, und stattdessen lieber den Umlaut ausschreiben, also so:

Code: Alles auswählen

Sub MarkierenUndLoeschen
Das Makro soll dann in der Zeile zB das Datum überprüfen ob dieses in Tabelle:Test2 vorhanden sind und falls ja diese löschen.
Da hast Du dich etwas ungenau ausgedrückt.
Das Makro soll wo was löschen? Soll es im Blatt *Test* z.B. das Datum einlesen und im Blatt *Test2* suchen, und wenn im Blatt *Test2* gefunden auch dort löschen? Oder wie?

Und was ich auch noch nicht so recht versteh, warum die Zeilen einfärben und dann löschen? Den Sinn musst Du mal genauer erklären, bidda schön.



Gruß
balu

Re: Makro

Verfasst: Di, 08.07.2014 08:25
von RealmReborn
Soll es im Blatt *Test* z.B. das Datum einlesen und im Blatt *Test2* suchen, und wenn im Blatt *Test2* gefunden auch dort löschen? Oder wie?
Sry falls ich mich ungenau ausgedrückt hab und das was du vermutet hast ist Richtig. Das Makro soll im Blatt Test das Datum auslesen und in Blatt Test2 suchen und wenns gefunden wird im Blatt Test2 dort rauslöschen.
Und was ich auch noch nicht so recht versteh, warum die Zeilen einfärben und dann löschen? Den Sinn musst Du mal genauer erklären, bidda schön.
Das erste Blatt ist ne Übersicht von allen Aufträgen und die die erledigt sind sollen gefärbt werden damit mann sieht welche noch Offen sind.
Das 2te Blatt enthält Termine und genauere Angaben zum Auftrag. Deswegen soll das Makro wenn es erledigte Aufträge färbt diese dannach aus dem Terminblatt löschen da diese abgearbeitet sind und so dann ne bessere Übersicht übrig bleibt.

Falls noch was unklar ist fragen :3

Gruß
RealmReborn

Re: Makro

Verfasst: Mo, 14.07.2014 12:53
von RealmReborn
Da sich hier nix tut nehm ich mal an das es keine Lösung für das Problem gibt oder es Probleme dazu ergeben?
Sry falls das jetzt Doppelpost ist. Wenn ja Bitte löschen.

Re: Makro

Verfasst: Mo, 14.07.2014 14:56
von lorbass
RealmReborn hat geschrieben:Da sich hier nix tut nehm ich mal an das es keine Lösung für das Problem gibt oder es Probleme dazu ergeben?
Warum so pessimistisch? Ich glaube nicht, dass es keine Lösung gibt und vermute eher, dass der Thread lediglich irgendwie aus dem Blickfeld geraten ist. Es reicht in solchen Fällen, wenn du ihn mit 'ner kurzen Bemerkung in einem neuen Beitrag „aufweckst“.
RealmReborn hat geschrieben:Sry falls das jetzt Doppelpost ist.
Das „Aufwecken“ eines Threads ist kein „Doppelpost“ oder „Crosspost“.
RealmReborn hat geschrieben:Wenn ja Bitte löschen.
Sofern du an anderer Stelle dieses Forums oder in anderen AOO-/LO-Foren tatsächlich Crossposts eingestellt hast, empfiehlt es sich, diese entweder zu löschen, sofern das noch möglich ist, oder zumindest in allen Posts mit demselben Thema Links zu den jeweils anderen Duplikaten anzubringen, also auch hier! Lies dazu bitte die Allgemeinen Hinweise zur Forumsbenutzung, in jedem Bereich dieses Forums ganz oben in den permanenten Bekanntmachungen.

Gruß
lorbass


PS: In der Sache kann ich dir leider nicht weiterhelfen.

Re: Makro

Verfasst: Mo, 14.07.2014 16:21
von clag
Hallo RealmReborn,

habe für dich mal ein Makro erstellt

Code: Alles auswählen

Sub MarkierenUndLoeschen

myDoc = thisComponent
mySheet1 = myDoc.sheets(0)
mySheet2 = myDoc.sheets(1)

    nx = mysheet1.Columns(2).queryEmptyCells() '
    nMax = nx(nx.Count-1).RangeAddress.StartRow - 1
    dx = mysheet2.Columns(0).queryEmptyCells() '
    dMax = dx(dx.Count-1).RangeAddress.StartRow - 1

    for i=0 to nMax 
        checkcell = mysheet1.getCellByPosition(2,i)
        if checkcell.string = "x" then
        deletenumber = mysheet1.getCellByPosition(0,i).string
'        print "in Zeile " & i+1 & " steht ein X und diese Auftragsnummer" & deletenumber
        for d=0 to dMax 
            deletecell = mysheet2.getCellByPosition(0,d)
            if deletecell.string = deletenumber then
                for y=0 to 5
                    texttodelete = texttodelete & "  " & mysheet2.getCellByPosition(y,d).string 
                next
                
                if MsgBox (texttodelete & "wird gelöscht",  260, "    diesen Datensatz löschen?") = 6 then 
                    mysheet2.getrows.removebyindex(d,1)
                    checkcell.string = "Datails gelöscht ~ " & NOW()
                    mySheet1.getRows().getByIndex(i).cellbackcolor = RGB(255,127,0)
                    End IF
                texttodelete = ""
            end if
        next
        end if
    next
End Sub
guckst und probierst du hier

Datei entfernt war nicht 100% ok in der nächsten Antwort ist die korrigierte Version

und hilft das weiter? ;)

edit: code eingefügt

Re: Makro

Verfasst: Di, 15.07.2014 09:08
von RealmReborn
Für die Testtabelle funktioniert es genau so wie ichs wollte :D
Nun ein kleines Problem:
Ich hab es jetzt für die Zieltabelle übernommen und getestet.
Hier kommt die Fehlermeldung:

BASIC-Laufzeitfehler.
"1"
type:com.sun.star.langIndexOutOfBoundsException
Message:


für diese Codezeile

Code: Alles auswählen

dMax = dx(nx.Count-1).RangeAddress.StartRow - 1
Kann es sein das es mit der Zelladresse zusammenhängt die im Makro sind?

Ansonsten DANKE clag für das Makro ^^ (werd ma versuchen die Fehlerquelle selber zu beheben)

Mfg RealmReborn
PS: Die Zieltabelle ist ein vertrauliches Dokument deswegen kann ich diese nicht anbieten.

Re: Makro

Verfasst: Di, 15.07.2014 13:11
von clag
Hallo RealmReborn,

kann eigentlich nur am Index der Tabellen Blätter liegen
oder an den Spalten in denen X und Nummer gesucht werden

Blatt Index ist 0 und 1 belegt also 1. und 2. Tabelle Name ist egal
Habe noch einen kleinen Fehler im Makro und beseitigt in der Zeile die du aufzeigt hast

versuch mal dieses hier
18_64245_Beispieldatei+Makro_1.ods
(11.57 KiB) 97-mal heruntergeladen