Verhexte fehlersuche

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: Verhexte fehlersuche

von LSH_Dackel » Mo, 04.09.2006 00:47

OK natürlichkannst du den genauen fehler noch ma sehn

im "main makro" EBP weden die werte von diversen makros in die tabelle eingetragen bis hier

http://lshdackel.ls.funpic.de/Demo/Quellwerte.jpg

und diese werte benutzt nun besagtes makro und lässt einen weg

http://lshdackel.ls.funpic.de/Demo/Ausgabewerte.jpg

wenn du nur dieses eine makro seperat ausführst dann nutze diese tabelle

http://lshdackel.ls.funpic.de/Demo/Kole ... werten.ods

damit dürftest du den fehler reproduziren können. :wink:

von Stephan » Mo, 04.09.2006 00:39

Wenn es jetzt geht freut es mich.
tutmir leid das ich eu damit behelligt habe


das ist doch überhaupt nicht der Fall gewesen - wir sind außerdem dafür da Fragen zu beantworten.

Nur, Sorry, Du sagst ein bestimmtes!!!! Makro arbeitet fehlerhaft und bestätigst das auf Nachfrage nochmal.
Er geht erst beim schreiben verloren
Ich habe das sorgfältig geprüft (und mich hat dieser Thread hier etwa 2 Stunden gekostet) und konnte keinen Fehler finden.
Da ich mich nun keineswegs für unfehlbar halte, bat ich Dich in die betreffenden Zellen einige Werte einzutragen mit denen der Fehler reproduzierbar wäre damit ich Dir hätte helfen können ihn zu finden.

Es sind nun keinesfalls Entschuldigungen nötig und gerne werde ich auch zukünftig Fragen von Dir beantworten ... einzig bitte ich darum zu verstehen das ich im Konkreten keinen Fehler an einer Stelle finden kann wenn er an einer anderen Stelle ist und ich es andererseits ernst nehme wenn Du mir sagst der Fehler ist doch an der genannten Stelle.



Gruß
Stephan

von LSH_Dackel » Mo, 04.09.2006 00:01

Habe mein problem nun gelöst

ich hab jetz einfach eine einfachere formulierung genommen.

Code: Alles auswählen

   For Count = 1 To 61
     oSheet.getCellByposition(52, 5 + Count).setformula(Entry (0,Count))
     oSheet.getCellByposition(51, 5 + Count).setformula(Entry (1,Count))

   next  count
diese formulierung

Code: Alles auswählen

   For Count = 1 To 31
     oSheet.getCellByposition(48, 37 - oSheet.getCellByposition(49,36).value).value = (Entry (0,Count))
     oSheet.getCellByposition(47, 36 - oSheet.getCellByposition(49,36).value).setformula(Entry (1,Count))
   next  
war nur bei dem vorherliegenden makros nötig da deren werte von mehreren makros eingelesen und und in die temp1 geschrieben wurden

tutmir leid das ich eu damit behelligt habe :oops:

von Stephan » Fr, 01.09.2006 21:16

Tut mir leid wegen demn letzten Thread
...
Ich hoff das jetzt keine weiteren komunikationsproblem mehr auftreten


Leid zu tun braucht Dir nichts, ein Kommunikationsproblem haben wir allerdings ein wenig.

Der Thread geht darum das Du sagst ein bestimmtes Makro (ranking22HJTemp2_BP) arbeitet fehlerhaft, ist das nun so oder nicht?

Dieser Sachverhalt müßte doch endlich zu klären sein. Mir ist jedenfalls inzwischen vollkommen unklar worüber wir hier reden - geht es um dieses Makro oder nicht?

Falls ja,
dann liefere bitte einen Link zu einer Datei die Werte enthält die zu dem Fehler führen wenn ich das Makro starte.
Das heißt:
Das Makro greift auf die Werte in den Zellen AL7 bis AM37 zurück, sortiert diese und schreibt sie in die Zellen AV7 bis AW37. Also brauche ich eine Datei in der in AL7 bis AM37 richtige Werte stehen und durch Starten des Makros die erzeugten Werte in den Zellen AV7 bis AW37 anschließend trotzdem falsch sind bzw. der Fehler auftritt das ein Wert garnicht übertragen wird.

Eine solche Datei bitte ich Dich zu erstellen und hier zu verlinken, dann werde ich mir das nochmals ansehen.


Falls nein,
definiere bitte Dein Problem neu.



Gruß
Stephan

von LSH_Dackel » Fr, 01.09.2006 15:33

Tut mir leid wegen demn letzten Thread ich hatte heut morgen net viel zeit weil ich zu meinem Ferienjob musste.

Ich hoffe des ma krieg ichs besser hin.

Die ursprünglinchen date befinden sich in den spalten A bis E.


Danach werden sie nach größe sortiert und in "TEMP1" ( Spalte AA bis AH)
geschrieben.

Danach wird das ganze je nach Wert in der spalte Z durch diesen code

Code: Alles auswählen

oSheet = oSheets.getByName("HJLübersicht")
for zeile2 = 3 to 16
if oSheet.getCellByposition(25,zeile2).formula = "4" then
ranking22HJTemp_4BP(zeile2)
elseif oSheet.getCellByposition(25,zeile2).formula = "3" then
ranking22HJTemp_3BP(zeile2)
ranking22HJTemp_3NBP(zeile2)
elseif oSheet.getCellByposition(25,zeile2).formula = "2" then
ranking22HJTemp_2BP(zeile2)
ranking22HJTemp_2NBP(zeile2)
elseif oSheet.getCellByposition(25,zeile2).formula = "0" then
ranking22HJTemp_0BP(zeile2)
end if
next zeile2


in "TEMP1 BP" (Spalte AL und AM) oder "TEMP1 NBP" (Spalte AP und AQ)
eingetragen.

Und jetzt komm erst das makro ranking22HJTemp2_BP bzw ranking22HJTemp2_NBP

Welches diese werte nun nach größe sortieren und in "TEMP2 BP" bzw "TEMP2 NBP" eintragen soll .

Das Problem is nur das der letzte wert der spalt AL und AP als Leerzelle eingetragen wird

Und das makro del im Modul "AAAdel" sorgt dafür daswieder Leerzellen da sind und sich die werte nicht einfach überschreiben wenn der wert auf null steht.

also das dieser wert oSheet.getCellByposition(49,36).value wieder 31 ist

Ich hoff das jetzt keine weiteren komunikationsproblem mehr auftreten :wink:

von Stephan » Fr, 01.09.2006 12:50

Also mal ernsthaft:

der Thread fing an mit einem Makro was nicht funktionieren sollte, nun habe ich das getestet (und es funktioniert meiner Meinung nach), nun schreibst Du:
Denn die quellwerte für das ganze aus den spalten A bis E.
ja bloß was soll dieser Satz aussagen??
Führe jetzt einfach mal das makro in "AAAdel" aus
Habe ich gemacht, aber was soll das Bringen?
Das Makro hat folgenden Inhalt:

Code: Alles auswählen

Sub del
Dim oSheets as Object 
Dim oSheet as Object 
Dim zelle as Object 

oSheets = ThisComponent.Sheets 
oSheet = oSheets.getByName("HJLübersicht")

For c1 = 6 to 16 
zelle = oSheet.getCellByposition(0, c1) 
select case zelle.string
   case = "Mathematik"
    oSheet.getCellByposition(25, c1).setformula("") 
   case = "Deutsch"
    oSheet.getCellByposition(25, c1).setformula("") 
   case = "Englisch"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Spanisch"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Latein"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Französisch"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Griechisch"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Kunst"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Musik"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Geschichte"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Geographie"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Sozialkunde"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "WR"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Religion ev."
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Religion kath."
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Ethik"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Sport"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Chor"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Engl. Konv."
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Franz. Kon."
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Instr. Musik"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Orchester"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Phonographie"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Archäologie"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Astronomie"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Informatik"
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Dramat. Gest."
    oSheet.getCellByposition(25, c1).setformula("")
   case = "Italienisch"
    oSheet.getCellByposition(25, c).setformula("")
   case = "Russisch"
    oSheet.getCellByposition(25, c).setformula("")
   case = "Bitte Konfig ausfüren"
    oSheet.getCellByposition(25, c1).setformula("")
end select
next c1

for deltemp1BPy = 6 to 36
for deltemp1BPx = 37 to 38
oSheet.getCellByposition(deltemp1BPx,deltemp1BPy).setformula("")
next deltemp1BPx
next deltemp1BPy

for deltemp1NBPy = 6 to 66
for deltemp1NBPx = 41 to 42
oSheet.getCellByposition(deltemp1NBPx,deltemp1NBPy).setformula("")
next deltemp1NBPx
next deltemp1NBPy

for deltemp2BPy = 6 to 36
for deltemp2BPx = 47 to 48
oSheet.getCellByposition(deltemp2BPx,deltemp2BPy).setformula("")
next deltemp2BPx
next deltemp2BPy

for deltemp2NBPy = 6 to 66
for deltemp2NBPx = 51 to 52
oSheet.getCellByposition(deltemp2NBPx,deltemp2NBPy).setformula("")
next deltemp2NBPx
next deltemp2NBPy

End Sub
und die gesamte Aufgabe des Makros ist das es in diverse Zellen nur Leerstrings einträgt, außer wenn noch keine Fächernamen da sind in bestimmte Zellen nicht ... was aber auch völlig irrelevant ist da das Makro in jedem Fall in die für das Makro:
und dann das in "berechnung" dann siehst du das problem.
also sub ranking22HJTemp2_BP relevanten Zellen AL7 bis AM37 nur Leerstrings einträgt.

Damit kann das Makro sub ranking22HJTemp2_BP nicht zum gewünschten Ergebnis führen, denn es sind nur Leerstrings vorhanden.


So sehe ich die Situation.



Gruß
Stephan

von LSH_Dackel » Fr, 01.09.2006 06:43

Da hast du glaub ich wirklich was missverstanden.

Denn die quellwerte für das ganze aus den spalten A bis E.

Führe jetzt einfach mal das makro in "AAAdel" aus und dann das in "berechnung" dann siehst du das problem.

"AAAdel" gehört eigentlich in an das ende des makros "EBP" in "berechnung"
ich habe es nur zu fehler suche ausgelagert und damit muss es "normal" jedes mahl nach "EBP" ausgeführt werden damit kein fehler auf trit.

Also du brauchst selber keine werte eintragen dann dürftest du mein problem sehen.

von Stephan » Fr, 01.09.2006 01:36

Ich habe es sorgfältig geprüft, kann aber Nichts finden.

Ich habe in die Zellen AL7 bis AM37 Texte geschrieben und das Makro gestartet, die Werte werden sortiert und nach AV7 bis AW37 übertragen, der alphabetisch vorderste Wert steht unten.

Ich sehe somit keinen Fehler.


Was nun? :?

(oder mißdeute ich wie das Ganze funktionieren soll?)


Gruß
Stephan

von LSH_Dackel » Do, 31.08.2006 23:55

Hallo stephan das mit der msgbox hab ich schon mal probiert da ist der wert auch noch vorhanden aber wenn ich ihn eintragen lassen will ist er weg.
Das merkwürdie ist ja eigentlich das der code dafür gleich geblieben ist.

Du kann dir das ganze auch anhand der datei anschauen.

http://lshdackel.ls.funpic.de/Demo/Kolegstufe.ods

Das makro befindet sich in der lib "Konfig" und dem modul "Berechnung".

In dem modul "AAA" befindet sich der ursprüngliche code.

Ein teil den ich zum vergleichen der makros auslagern musste befindet sich in dem modul "AAADEL"ohne diesen teil funktioniert das mit dem leerzellen zählen nicht und die werte überscheiben sich in der selben zelle.

Aber du wirst das alles bestimmt erkennen.

Fals dir das kauderwelsch jetzt nich wirklich geholfen hat beantworte ich konkret deine frage.
Wo geht denn der Wert verloren?
Er geht erst beim schreiben verloren.

von Stephan » Do, 31.08.2006 21:47

Tschuldie ich hab vorhin vergessen zu sagen das das nich der Entry(0,x) wert nicht eingetragen wird sondern der dazugehörige Entry(1,x) wert
Also aus dem Code kann ich nichts ersehen, außer das ich nicht unbedingt verstehe warum Du mit .String liest und mit .setformula zurückschreibst. Warum verwendest Du nicht .String falls es um Texte geht?
(ich würde dann aber nicht verstehen warum es nur bei einem Wert nicht funktioniert und bei 30 weiteren aber doch)
Aber Du mußt doch nun irgendwas untersucht haben, ich kann das mangels Ausgangswerten nicht.

Wo geht denn der Wert verloren?

Entweder er wird nicht eingelesen oder ist nach dem Sortieren nicht mehr da oder wird nicht geschrieben. Wieder kann ich das ohne Datei nicht feststellen, Du aber schon.

Wird der Wert tatsächlich nicht eingetragen, ich kann mir das überhaupt nicht vorstellen weil der Code ganz eindeutig ist. Vielleicht wird ein leerer Wert eingetragen? Vielleicht wird der Wert an falscher Stelle eingetragen, weil der Wert in oSheet.getCellByposition(49,36).value nicht stimmt?

Das alles ist aus dem Code nicht zu ersehen, Du wirst es testen müssen. Also sagen wir mal:

*vor die Schleife die die Werte einträgt den letzten Wert, welcher nicht eingetragen wird, anzeigen lassen, z.B. mit:

Code: Alles auswählen

Msgbox Entry(1,31)
dann ist das eine Anzeige oder nicht. Wenn nicht nachsehen welcher der eingelesenen Werte nach der Sortierung der letzte sein muß und kontrollieren ob der auch eingelesen wird indem Du unmittelbar vor der Sotieroutine ihn wieder mit:

Code: Alles auswählen

Msgbox Entry(1,x)


abfragst.
(x kenne ich von hieraus nicht da von der Sortierug abhängig)


Gruß
Stephan

von LSH_Dackel » Do, 31.08.2006 19:36

Tschuldie ich hab vorhin vergessen zu sagen das das nich der Entry(0,x) wert nicht eingetragen wird sondern der dazugehörige Entry(1,x) wert

ich hoffe ich jetz niemanden damit unnötige arbeit gemacht :oops:

von LSH_Dackel » Do, 31.08.2006 18:46

Stephan danke für die schelle antwort aber des wars net :(

von Stephan » Do, 31.08.2006 18:36

also ich schaue es mir auch nochmals genauer an, falls mir keiner zuvorkommt, aber lass doch mal versuchweise:

Code: Alles auswählen

Dim Temp As Double
weg, das sticht mir gleich ins Auge.


Gruß
Stephan

Verhexte fehlersuche

von LSH_Dackel » Do, 31.08.2006 18:22

Hi Leute
ihr hatted jetz zwar ma ne weile ruhe vor meiner fragerei aber alles hat ein mal ein Ende. :oops:

Ich habe folgendes problem:

Ich habe mein bubble-sort so um geschrieben das es auch text verwendet
nun wird aber der zu letzt eingelesene "Text" nicht in die tabelle übertragen wie bei der version die nur mit Zahlen arbeited.

Dies war die ursprüngliche Version:

Code: Alles auswählen

sub ranking22HJTemp2_BP

Dim Entry(1, 31)
Dim Count As Double
Dim Count2 As Double
Dim Temp As Double

oSheets = ThisComponent.Sheets 
oSheet = oSheets.getByName("HJLübersicht")

Entry(0,1) = oSheet.getCellByposition(38,6).value
.
.
Entry(1,1) = oSheet.getCellByposition(37,6).formula
.
.
For Count = 1 To 31
For Count2 = Count + 1 To 31
If Entry(0,Count) < Entry(0,Count2) Then
Temp = Entry(0,Count)
Temp2 = Entry(1,Count)
Entry(0,Count) = Entry(0,Count2)
Entry(1,Count) = Entry(1,Count2)
Entry(0,Count2) = Temp
Entry(1,Count2) = Temp2
End If

Next Count2
Next Count

   For Count = 1 To 31
     oSheet.getCellByposition(48, 37 - oSheet.getCellByposition(49,36).value).value = (Entry (0,Count))
     oSheet.getCellByposition(47, 36 - oSheet.getCellByposition(49,36).value).setformula(Entry (1,Count))
   next  

end sub
Und das ist die neue:

Code: Alles auswählen

sub ranking22HJTemp2_BP

Dim Entry(1, 31)
Dim Count As Double
Dim Count2 As Double
Dim Temp As Double

oSheets = ThisComponent.Sheets 
oSheet = oSheets.getByName("HJLübersicht")

Entry(0,1) = oSheet.getCellByposition(38,6).string
.
.
Entry(1,1) = oSheet.getCellByposition(37,6).formula
.
.
For Count = 1 To 31
For Count2 = Count + 1 To 31
If Entry(0,Count) < Entry(0,Count2) Then
Temp = Entry(0,Count)
Temp2 = Entry(1,Count)
Entry(0,Count) = Entry(0,Count2)
Entry(1,Count) = Entry(1,Count2)
Entry(0,Count2) = Temp
Entry(1,Count2) = Temp2
End If

Next Count2
Next Count

   For Count = 1 To 31
     oSheet.getCellByposition(48, 37 - oSheet.getCellByposition(49,36).value).setformula(Entry (0,Count))
     oSheet.getCellByposition(47, 36 - oSheet.getCellByposition(49,36).value).setformula(Entry (1,Count))
   next  count

end sub
oSheet.getCellByposition(49,36).value 'zählt leerzellen in der tabelle

Ich check einfach net warum dieser fehler auftrit da ich nix wesentliches verändert hab .


Bestimmt lach sich einer von euch wegen meinen n00b-fragen kaputt oder is scho genervt aber ihr checkts halt im gegensatz zu mir richtig aus 8)

Also schon ma THX im vorraus

Nach oben