Rätsel bei Löschen per Makro

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: Rätsel bei Löschen per Makro

Re: Rätsel bei Löschen per Makro

von marcel_at_work » Fr, 18.06.2010 15:26

b) ... weil ich´s ned mehr packe! ;-)

Good Night... zzz zz zz z z

Re: Rätsel bei Löschen per Makro

von Karolus » Fr, 18.06.2010 15:15

Hallo
Du kannst nicht stillschweigend über ein Thema rauschen, um dann nur die Rechtschreibfehler zu kommentieren!
Ich denke, zumindest ein kleiner Lösungsansatz wäre schon zumutbar...
@Marcel
a - Ich hab nicht nur Rechtschreibfehler angemeckert 8)
b - wieso sollte ich dir die Arbeit abnehmen?

Gruß Karo

Re: Rätsel bei Löschen per Makro

von marcel_at_work » Fr, 18.06.2010 15:11

:lol:

So Mädels, i geh erst mal in die Heia...

Mal guckn... vieleicht kommt ja hier heut noch der ein oder andere vorbei und gibt dir die erlösende Info. ;-)

Lg, Marci

Re: Rätsel bei Löschen per Makro

von sven-my » Fr, 18.06.2010 15:06

Hallo Karo,

:D English und ich : zwei Welten prallen aufeinander --- der Unterricht ist so ca. 45Jahre her.

gruß
sven-my

Re: Rätsel bei Löschen per Makro

von marcel_at_work » Fr, 18.06.2010 15:01

Ps.: Hey Karo...

Du kannst nicht stillschweigend über ein Thema rauschen, um dann nur die Rechtschreibfehler zu kommentieren! :lol:
Ich denke, zumindest ein kleiner Lösungsansatz wäre schon zumutbar... ;-)

Lg

Re: Rätsel bei Löschen per Makro

von marcel_at_work » Fr, 18.06.2010 15:00

Jepp, hab´ich fast vergessen... da gab´s ja noch etwas, was dazu gesagt werden sollte. ;-)

Lg, Marci

Re: Rätsel bei Löschen per Makro

von Karolus » Fr, 18.06.2010 14:57

Hallo
Habe ich das richtig verstanden : "On Error Resume Next" muß immer vor der Zeile stehen, in der Fehler auftreten könnte ?
Ja, - aber benutze das nur wenn du genau weisst was du tust - damit werden auch alle nachfolgenden Fehler im Code der Sub stillschweigend übergangen - was in den meisten Fällen nicht so gewünscht ist.

btw. Treat != Thread

Gruß Karo

Re: Rätsel bei Löschen per Makro

von marcel_at_work » Fr, 18.06.2010 14:52

Jepp, genau. Einfach "On Error Resume Next" davor, und es klappt wieder mit dem Nachbarn. ;-)

Eine andere Methode wäre dann z.b. noch die "On Error Goto..."-Anweisung:

Code: Alles auswählen

...
    On Error Goto Fehlerbehandlung
    oDoc.sheets().getbyName("sheet1").getcellbyposition(0,0).string = "1" 'das Programm wird bei einem Fehler, durch "On Error Goto...", an die bezeichnete "Fußnote" (hier: "Fehlerbehandlung") gesetzt und weitergeführt
    Exit Sub

    Fehlerbehandlung: 'der Doppelpunkt ist übrigens für die Standard-Deklaration einer "Fußnote" in Code zuständig (genauso könnte man in irgendeiner Funktion "Goto irgendwas" schreiben und dann wird das Programm bei "irgendwas:" weitergeführt)
    msgbox "haha, NIX is mit Fehler, denn alles is Paletti ;-)"
End Sub
Das mit der Funktion von "ausT" hab ich schon verstanden! Ich habe dies explizit nochmal nachgefragt, weil ich mir den Fehler AUSSCHLIEßLICH so erklären kann, dass die Variable STETS DEN WERT hat, mit dem er durch die erste "IF-Anweisung" kommt. Denn die IF-Überprüfung ist KORREKT und sie MUß bei einem anderen Wert als "- p" ein FALSE (die zweite Anweisung ausführen) ausgeben. Ich versteh es einfach nicht. :(

Hm... wie wäre es denn so: (mal ein bisschen aufgeräumter und optimiert;-) )

Code: Alles auswählen

Sub xxx()
    ausT = oDoc.getTextTables().getByName("eMail").getCellByPosition(0,0).string
    On Error Resume Next
    if left(ausT,3) = "- p" then
        oDoc.getTextTables().getByName("Tabelle2").getCellByPosition(1,2).setString("x") 'Unterschrift-Flag
    else
        oDoc.getTextTables().getByName("eMail").getCellByPosition(1,0).setString("")   'mail-adresse löschen
    End if
end sub

lg, Marci

Re: Rätsel bei Löschen per Makro

von sven-my » Fr, 18.06.2010 14:32

Hallo Marci,

also : Nein, "ausT" ist nicht immer "- p", sondern das läuft so, wie paar Treats weiter oben unter 1.,2., 3., und 4. beschrieben;
es hängt eben davon ab, was in dem entsprechenden Feld des Adreß-Programms steht, und dann in diese Tabelle eingetragen wird.

Mit "On Error Resume Next" müßte es also so aussehen (???) :

Code: Alles auswählen

ausl = oDoc.getTextTables().getByName("eMail").getCellByPosition(0,0).string
rem  ausl = ausl+"xxxx"
On Error Resume Next
ausT = left(ausl,3)   'ergibt entweder "- p" oder "Ein" oder "per"
wait 200
if ausT = "- p" then oDoc.getTextTables().getByName("Tabelle2").getCellByPosition(1,2).setString("x") 'Unterschrift-Flag
wait 100
if ausT <> "- p" then oDoc.getTextTables().getByName("eMail").getCellByPosition(1,0).setString("")   'mail-adresse löschen   
end sub
Habe die Addition auskommentiert, damit man den Ursprung noch sieht.

Habe ich das richtig verstanden : "On Error Resume Next" muß immer vor der Zeile stehen, in der Fehler auftreten könnte ?

gruß
sven-my

Re: Rätsel bei Löschen per Makro

von marcel_at_work » Fr, 18.06.2010 14:03

Das wußte ich natürlich nicht. Aber das du dir die Mühe mit dem Timer-Experiment gemacht hast... man man man... Respekt. ;-)

Na, UND???????? WAS kommt denn nun raus? Ist der Wert der Variablen VOR der wait-Anweisung "- p"???????????

Dann erklär ich es mal kurz... es ist einfacher als den Fernsehr einzuschalten: ;-)

Wenn man eine Codezeile hat, bei der ein Fehler auftreten könnte, wird durch die "On Error"-Methode (VOR dieser Zeile) die Möglichkeit gegeben, diesen Fehler auf versch. Arten zu "behandeln".

Z.B. kann man durch "On Error Resume Next" den Fehler einfach überspringen, d.h. es wird einfach die nächste Codezeile, nach dem Fehler, abgearbeitet:

Bsp.:
sheet1 = ... gibt es nicht!

Code: Alles auswählen

...
oDoc.sheets().getbyName("sheet1").getcellbyposition(0,0).string = "1" 'hier würde nun ein Fehler auftreten und OOo stoppen
... aber so:

Code: Alles auswählen

...
On Error Resume Next
oDoc.sheets().getbyName("sheet1").getcellbyposition(0,0).string = "1" 'OOo registriert zwar dennoch diesen Fehler, aber er (also DIESE Zeile) wird durch die "On Error"-Methode einfach übersprungen
msgbox "haha, NIX is mit Fehler, denn alles is Paletti ;-)"
Diese Funktion ist zwar simple, hat aber ein gewaltiges Potenzial, da man sich dadurch zum einen Programmieraufwand und zum anderen auch viel Nerven einsparen kann. ;-)

Lg, Marci

Re: Rätsel bei Löschen per Makro

von sven-my » Fr, 18.06.2010 13:47

Hallo Marci,

durch die msgbox bin ich ja erst auf das "wait" gekommen --- bevor ich das zweite "wait" eingebaut hatte, habe ich mit der msgbox prüfen wollen, weshalb der Inhalt nicht gelöscht wird, aber das Abarbeiten der msgbox hat wohl soviel Zeit gekostet, daß das Löschen immer klappte, wenn die msgbox da war; hatte ich sie auskommentiert, wurde wieder nicht gelöscht.

Daher kam ich auf die Idee den "wait"-Befehl einzubauen, und habe dann von 10 ab immer weiter um 10 erhöht, bis es fehlerfrei klappte.

Zu "On Error Resume Next" : Dafür reicht mein Wissen absolut nicht aus !

gruß
sven-my

Re: Rätsel bei Löschen per Makro

von marcel_at_work » Fr, 18.06.2010 13:30

Naja... um mit einer leeren Variable weiterzuarbeiten, könnte man auch die "On Error Resume Next"-Methode wählen.

Jepp, hab ich angeschaut und jetzt auch begriffen. ;-)

Setz doch mal "msgbox ausT" vor und nach das "wait" und schau mal, welchen Wert sie hat. Ansonsten bin ich mit meinem Latein leider am Ende.

Lg, Marci

Re: Rätsel bei Löschen per Makro

von sven-my » Fr, 18.06.2010 13:24

Hallo Marci,

die variablen "ausT" ist der Inhalt der Tabelle "eMail, Spalte 0, Zeile 0" und dieser Inhalt ist entweder:

1. leer + xxxx ergibt 'xxxx' --- davon left(ausl,3) ergibt "xxx"
2. - per eMail - + xxxx ergibt '- per eMail -xxx' --- davon left(ausl,3) ergibt "- p"
3. Einschreiben + xxxx ergibt 'Einschreibenxxxx' --- davon left(ausl,3) ergibt "Ein"
4. per Boten + xxxx ergibt "per Botenxxxx" --- davon left(ausl,3) ergibt "per"

die addition mit "xxxx", damit ich keine Fehlermeldung bekomme, wenn die Variable leer ist, und ich die linken drei Zeichen auswerten will.

Schau mal weiter oben, ich habe einen link nachträglich eingesetzt, da ist ein Teil der Vorlage (*.ott) zu sehen.


gruß
sven-my

Re: Rätsel bei Löschen per Makro

von marcel_at_work » Fr, 18.06.2010 13:06

Hmmm... scheint ja eigentlich ganz simple zu sein.

Aber IRGENDWIE wird die Variable "ausT" stets mit "- p" belegt.

Lg, Marci

Re: Rätsel bei Löschen per Makro

von sven-my » Fr, 18.06.2010 12:59

Hallo Marci,

:? welche Datei ?
Das Makro ist Teil eines Größeren, welche nur bei mir funktioniert, weil ich dabei auf ein Programm zugreife, daß nicht jeder auf seinem Rechner hat, und die Vorlage, aus denen ich meine Schreiben erstelle, ist auf das Programm zugeschnitten.

A Detail: Das Makro stellt eine Verbindung zwischen Adreß-PrG und den verschiedenen Brief-Vorlagen (*.ott) dar.
Die Tabelle, die mit "eMail" bezeichnet ist, ist eine 2spaltige, 1zeilige Tabelle über dem Adreß-Feld, in der in der ertsen Spalte die Versandart (eMail, Einschreiben, per Boten) verzeichnet wird, und in der Spalte 2 steht die eMail-Adresse, die soll aber nur stehen bleiben, wenn der Brief per Mail (*.pdf) verschickt wird.

Die Tabelle2 dient der Aufname von Datum, Betreff, Bezug und "Ihr Schreiben vom ....", "mein Schreiben vom ..." und hat eine ansonsten ungenutzte Zelle, in die ich einfach ein "x" (Flag) per Makro einschreibe, um dann bei Fax und eMail ein Unterschrift-Faximilie unter den Gruß setze.

http://yfrog.com/83screenshot14920100618j

gruß
sven-my

Nach oben