Chi Lu Jung Geschrieben April 10, 2004 Geschrieben April 10, 2004 (bearbeitet) Hallo David,die Frage ist, wo das Makro "Endsaldo" steht? Wenn es in einer anderen Arbeitsmappe steht oder an ein anderes Tabellenblatt gebunden ist, gibt es Schwierigkeiten. Also stelle mal die Arbeitsmappe zum Download ein, ich werde dann den Fehler schnell beheben. So eine Fernanalyse ist immer schwierig, schneller geht es, wenn ich die Arbeitsmappe vorliegen haben. Alternativ kannst du auch eine Schaltfläche aus der "Formular"-Symbolleiste verwenden. Hierzu über den Menüpunkt "Ansicht -> Symbolleisten" den Punkt "Formular" aktivieren". Dann aus dieser Symbolleiste eine Schaltfläche auswählen und auf deine Tabelle zeichnen. Dann geht automatisch ein Fenster zum Zuweisen des Makros auf. Wenn dort dein Makro "Endsaldo" nicht erscheint, dann steht es in einer anderen Arbeitsmappe!Danke bearbeitet April 10, 2004 von Chi Lu Jung
David Cooper Geschrieben April 10, 2004 Geschrieben April 10, 2004 Alternativ kannst du auch eine Schaltfläche aus der "Formular"-Symbolleiste verwenden. Hierzu über den Menüpunkt "Ansicht -> Symbolleisten" den Punkt "Formular" aktivieren". Dann aus dieser Symbolleiste eine Schaltfläche auswählen und auf deine Tabelle zeichnen. Dann geht automatisch ein Fenster zum Zuweisen des Makros auf. Wenn dort dein Makro "Endsaldo" nicht erscheint, dann steht es in einer anderen Arbeitsmappe!Toller Tipp Chin,jetzt funtktioniert alles perfekt!GrußDC
David Cooper Geschrieben Juli 18, 2004 Geschrieben Juli 18, 2004 @ChinEinbau der Hamburger-PermanenzenWie mir schon häufig aufgefallen ist findet sich in deinen Programmen häufiger die Möglichkeit Permanzen der Spielbank Hamburg direkt in die Spalte einzufügen. Kannst du mir die Rohfassung dafür geben? (wenn ich versuche eine bestehende Tabelle von dir umzuformen funktioniert das irgendwie nicht).Gruß // DC
Chi Lu Jung Geschrieben Juli 19, 2004 Geschrieben Juli 19, 2004 Hallo David,es gibt keine "Rohfassung". In diesem Posting findest du die ursprünglich Lösung. In der Tabelle "Permanenz" wird die aufbereitete Permanenz aus Hamburg angezeigt. Der Download erfolgt über die Tabelle "Download". Du kannst diese Datei als Vorlage verwende und in der Tabelle "Permanenz" ab Spalte B deine Formeln einfügen.
David Cooper Geschrieben Juli 19, 2004 Geschrieben Juli 19, 2004 Danke Chin, so etwas war genau das, was ich gesucht habe, aber irgendwie habe ich es in den ganzen Postings nicht mehr gefunden. Irgendwie ist das schon komisch, immer mehr Kunden (wenn man sie denn so nennen kann) wollen Hamburger Permanenzen haben, obwohl die Zufallspermanenzen gleichwohl Minus bringen - i.d.R. teste ich erst mir richtigen Permanzen, wenn die Zufallspermanenzen dauerhaft Plus ergeben. Gruß // DC
David Cooper Geschrieben Juli 19, 2004 Geschrieben Juli 19, 2004 Hallo Chin,wie ich gerade bemerkt habe spielt das Tool verrückt, wenn für einen Tag aus welchen Gründen auch immer keine Permanenzen vorliegen.Gruß // DC
Chi Lu Jung Geschrieben Juli 19, 2004 Geschrieben Juli 19, 2004 Hallo DC,weiß ich, damit mußt du halt leben. Aber Wenke hatte mal eine Datei eingestellt, welche diesen Fehler umgeht bzw. die Möglichkeit bietet, ein Jahr komplett runterzuladen. Suchen und finden
Wenke Geschrieben Juli 24, 2004 Geschrieben Juli 24, 2004 (bearbeitet) Hallo David CooperDer gewünschte Link:http://www.roulette-forum.de/index.php?showtopic=1704&st=30Benutze bitte den Download vom "May 16 2004, 01:03"Wenn du den Fehler nur umgehen willst, das das Blatt nicht verändert wird:Datei speichern- die Abfrage Datei speichern einfach nur mit "Nein" beantworten und alles wird gut!Viel Spass damitWenkeder nur Sonntags schreibt bearbeitet Juli 24, 2004 von Wenke
Feuerstein Geschrieben September 4, 2004 Autor Geschrieben September 4, 2004 @all!ich habe in einer tabelle einen zellenbezug für den mir überhaupt keine lösung einfällt. wahrscheinlich muß ich die ganze programmierung fast von anfang umschreiben.eine idee hab ich noch, benötige jedoch eure antwort dazu.kann ich diesen zellbezug mit einem macro umgehen, indem das macro die aufgabe löst statt das tabellenblatt? ich vermute ja nein.wenn doch, dann soll folgende aufgabe gelöst werden:=wenn(D11<>0;[laufe in Spalte E von E11 an nach unten bis die fehlermeldung "#NAME" erscheint, gehe wieder eine Zeile höher, und kopiere den Wert von dieser Zelle [E'xx'] in C11];ansonsten nichts machen)und wenn diese aufgabe erledigt ist soll das gleiche in einer zeile tiefer [D12] überprüft und ev ausgeführt werden, insgesamt über ca 1000 zeilen.als weitere schwierigkeit kommt hinzu, das in dem moment wo in C11 ein wert ungleich null eingefügt wird, in D11 der wert automatisch auf null gesetzt wird. ich weiß nicht ob es das noch unmöglicher macht.das macro sollte erst nach aufruf laufen, also nicht automatisch mit öffnen der tabelle.wenn diese "manipulation" möglich ist, würde ich mich sehr freuen wenn mir jemand den code für dieses macro schreiben könnte. das umschreiben des tabellenprogramms würde wieder ca zwei tage brauchen, und ich wüsste nicht ob ich nicht wieder einen zellbezug produzieren würde, ist nämlich schon der drtte anlauf.grüße, matthias s,
Chi Lu Jung Geschrieben September 4, 2004 Geschrieben September 4, 2004 Hallo matthias,soweit ich das verstehe, ist das Problem auf jeden Fall mit einem Makro zu lösen. Aber sinnvoller ist es, das Problem so zu lösen, dass es ohne Zellbezüge auskommt. Wenn du willst, dann stelle mal deine Excel-Datei ein oder sende mir diese per EMail. Ich schaue dann mal, ob ich was machen kann.EMail-Adresse per PM.
Feuerstein Geschrieben September 4, 2004 Autor Geschrieben September 4, 2004 hallo Chi!dank für deine prompte reaktion. die datei kann ich dir leider nicht schicken, weil sie mir nicht allein gehört. den zellbezug werde ich in der bestehenden form nicht wegbekommen können, weil die eine zelle schon von vornherein von der anderen abhängig ist. das war eine tabelle für ein handspiel, die ich mal wieder umschreibe für langzeittests um jedes einzelne element untersuchen zu können in der hoffnung auf optimierung.das es anscheinend grundsätzlich erstmal möglich ist mit einem macro den bezug zu umgehen finde ich schonmal sehhhhr erfreulich was ich dabei nur garnicht weiß ist wie ich nach der zelle suchen soll abwärts in "E" die den fehler enthält (der ist notwendig), und wie ich dem macro sage: der fehlerwert heist '#NAME'. und den rest bekomme ich auch nur bruchstückhaft zusammen, VBA ist einfach zu komplex um mit büchern richtig einsteigen zu können.grüße, matthias s.
Wenke Geschrieben September 4, 2004 Geschrieben September 4, 2004 @ matthias s.Du könntest folgendes Probieren:Oben in der Menüleiste aufOptionenBerechnungbei Iteration ein Häkchen setzen.bei maximale Iterationszahl: eine Zahl einsetzen, welche ausprobierenVielleicht hast du Glück und musst nicht noch mal von vorn beginnen.Ich drück dir mal die Daumen Beste GrüßeWenke
Feuerstein Geschrieben September 5, 2004 Autor Geschrieben September 5, 2004 hallo wenke!... [der nur sonntags schreibt?]danke für deinen tip! ist die iterationszahl eine größe, in der die schrittweise berechnung der zellen eine nach der anderen, in der soetwas wie die geschwindigkeit der berechnungen oder besser der pausen dazwischen angegeben wird?dann könnte es vielleicht sinn machen, denn ich habe die möglichkeit den zellbezug auf einen längeren weg zu legen. so das bevor sich der kreis schließt, immer eine große runde gedreht werden muß.schöne grüße, matthias s.
Chi Lu Jung Geschrieben September 5, 2004 Geschrieben September 5, 2004 Hallo matthias,ich fürchte, mit Iterationen wirst du auch nicht weitergekommen. Der Zähler besimmt, wie oft eine Iteration ausgeführt wird. Das Problem dabei ist, dass diese immer n-Mal ausgeführt wird. Führt in den meisten Fällen zu überraschenden Ergebnissen.Iterationen eigenen sich eigentlich nur für Zähler bzw. für die ständige Erweiterung einer Zelle.Ich würde vorschlagen, du beschreibst mal dein Problem mit Worten bzw. stellst eine abgespeckte Tabelle rein. Du sollst ja nicht das System verraten, sondern nur das Detailproblem darstellen.Bevor wir für dich arbeiten, mußt du schon eine Vorleistung bringen
Wenke Geschrieben September 5, 2004 Geschrieben September 5, 2004 @ matthias s. ist die iterationszahl eine größe, in der die schrittweise berechnung der zellen eine nach der anderen.....Da musste ich glatt noch mal überlegen und nachschlagen. Iterative Berechnungen sind wiederholte Berechnungen, die mit Zirkelbezügen arbeiten. Von Zirkelzügen wird gesprochen wenn z.Bin einer Formel in der Zelle B7,ein Operand oder ein Teilergebnis, das sich auf B7 bezieht auftaucht. Die Formel bezieht sich dann auf sich selbst.Das kann irrtümlich oder bewusst entstehen, beispielsweise bei Nährungsberechungen.Die Iterationszahl gib an wie oft die Berechnung durchgeführt werden soll.Wenn du natürliche Zahlen oder eindeutige Brüche verwendest, spielt die Größe kaum eine Rolle. wenn die erforderliche Mindestanzahl erreicht ist.Chi Lu Junghat natürlich Recht, es können dabei sehr, sehr eigenartige Ergebnisse entstehen.Ich vermute mal, das in deinen Berechnungen ganze natürliche Zahlen oder Brücheverwendet werden. Bei 1/3, 22/7 und ähnlichen würde (könnte) es die von chi beschriebenen Probleme geben.Prinzipell ist es natürlich bedeutend besser diese Bezüge zu entfernen.Aber bei ganz vielen, komplizierten von einander abhängigen Formeln....,darf man auch mal schwach werden. Beste GrüßeWenke
Feuerstein Geschrieben September 6, 2004 Autor Geschrieben September 6, 2004 hallo wenke und chi!ich arbeite in dieser Tabelle ausschließlich mit ganzzahlen. also gibt die iteration soetwas wie die genauigkeit der berechnungen an anstatt der verzögerung zwischen den berechnungen an. der bestehende zirkelbezug ist ein handfester, lasse ich ihn drin und speicher die tabelle so ab, dann werden beim neu-öffnen in den betreffenden zellen keine werte mehr angezeigt.ich denke ich werde mal versuchen eine abgespeckte version schreiben.ich hatte jetzt hier nocheinmal versucht das problem zu beschreiben, aber das wurde ein roman und den möchte ich euch ersparen.eine gleichwertiges "progrämmchen" werde ich schreiben und dann hier reinstellen, dann haben alle was davon, dauert aber.ich hab noch eine grundsatzMACROfrage, um macros aufzunehmen hab ich ja den recorder. wenn ich den starte, dann werde ich nach ner neuinstallation von office immer gefragt ob ich direkte verweise aufnehmen möchte oder relative. diese abfrage erscheint nicht mehr, wie kann ich diese abfrage hochholen? denn ich verwende ja nicht immer die selbe art.dankeschöööön und grüße, matthias s.
Feuerstein Geschrieben September 10, 2004 Autor Geschrieben September 10, 2004 hallo chin!dieser satz ist mir eben aufgestoßen:Ich würde vorschlagen, du beschreibst mal dein Problem mit Worten bzw. stellst eine abgespeckte Tabelle rein. Du sollst ja nicht das System verraten, sondern nur das Detailproblem darstellen.Bevor wir für dich arbeiten, mußt du schon eine Vorleistung bringen fünf postings darüber dachte ich das problem konkret beschrieben zu haben, halt in excelsprache, lässt sich das so nicht übertragen?wenn doch, dann soll folgende aufgabe gelöst werden:=wenn(D11<>0;[laufe in Spalte E von E11 an nach unten bis die fehlermeldung "#NAME" erscheint, gehe wieder eine Zeile höher, und kopiere den Wert von dieser Zelle [E'xx'] in C11];ansonsten nichts machen)und wenn diese aufgabe erledigt ist soll das gleiche in einer zeile tiefer [D12] überprüft und ev ausgeführt werden, insgesamt über ca 1000 zeilen.in excel kann ich es ja nicht rechnen lassen, weil dadurch der zirkelbezug vorhanden ist. ich hab die formel in excelsprache geschrieben, weil ich hoffe das sich das so umsetzen lässt in ein macro.ich denke das ich durch meine mitarbeit hier auch eine gewisse vorleistung erbringe, falls du noch etwas anderes meinst. viele grüße, matthias s.
Chi Lu Jung Geschrieben September 10, 2004 Geschrieben September 10, 2004 Hallo matthias,bitte nicht böse sein. Ich meinte mit Vorleistung nur die vollständige Beschreibung des Problems. Mein Gedanke dabei war, dass wir versuchen sollten, den Zirkelbezug zu vermeiden. Damit hättest du dir das Makro erspart. Deswegen habe ich um eine Beschreibung des Problems bzw. eine Beispieltabelle gebeten. Ich habe kapiert, dass du der Meinung bist, der Zirkelbezug läßt sich nicht vermeiden und du deshalb ein Makro hierfür willst. Für die Erstellung eines Makros ist deine Beschreibung ausreichend.Chin
Feuerstein Geschrieben September 10, 2004 Autor Geschrieben September 10, 2004 hallo chin!den zirkelbezug zu umgehen habe ich die letzten tage versucht, dabei wurde die tabelle schon um das 10fache größer, aber dieses eine detail, das habe ich echt nicht hinbekommen, und auch in gedanken ist es bisher nicht möglich, weil dadurch die struktur nicht gehalten werden kann.ich lese zum beispiel alle letzten gefallenen 30 coups aus, um 10 bis 30 coups vor dem letzten ein signal zu erzeugen, welches dann unten im aktuellen coup etwas ausführt. wenn diese ausführung meinetwegen plus brachte, dann muss oben (10 bis 30 coups zurück) neben das signal eine markierung, damit der angriff nicht weiterrechnet . von hand kann ich das eintragen, aber nicht mit ner formel=zirkelbezug.ich habe auch versucht das problem in einer anderen tabelle zu erzeugen um ein beispiel bieten zu können, aber schon an der bestehenden hab ich drei monate gearbeitet (kennst ja meine langen formeln) ich glaube ich hatte etwas missverstanden, nimms mir bitte nicht krumm. das ist wohl nicht ganz mein tag heute, das liegt nicht an dir, -sorry. viele grüße, matthias s.
Chi Lu Jung Geschrieben September 10, 2004 Geschrieben September 10, 2004 Hallo matthias,hier mal ein Lösungsvorschlag von mir. Wie du das Makro einkopieren und testen kannst, habe ich ja am Anfang dieses Threads schon beschrieben.Makro Option ExplicitPrivate Const VerglZelleStart = "D11"Private Const ZielZelleStart = "C11"Private Const ErgebnisZelleStart = "E11"Public Sub ErgebnisKopieren() Dim lastCpRow As Long Dim lastRltRow As Long Dim compRow As Long Dim resultRow As Long Dim resultCol As Long Dim targetCol As Long Dim compCol As Long With ActiveSheet resultCol = .Range(ErgebnisZelleStart).Column targetCol = .Range(ZielZelleStart).Column compCol = .Range(VerglZelleStart).Column 'wenn die Berechnung immer eine bestimmte Anzahl 'von Zeilen durchlaufen soll, dann hier den Wert eintragen 'lastCpRow = 1000 'lastRltRow = 1000 'Alternativ wird hier die letzte, gefüllte Zeile in 'Spalte "VerglZelleStart" ermittel lastCpRow = .Cells(.Rows.Count, compCol).End(xlUp).row lastRltRow = .Cells(.Rows.Count, resultCol).End(xlUp).row For compRow = .Range(VerglZelleStart).row To lastCpRow If Val(.Cells(compRow, compCol).Value) <> 0 Then For resultRow = compRow To lastRltRow If .Cells(resultRow, resultCol).Text = "#NAME?" Then .Cells(compRow, targetCol).Value = .Cells(resultRow - 1, resultCol) Exit For End If Next resultRow End If Next compRow End WithEnd Sub
ecart Geschrieben September 11, 2004 Geschrieben September 11, 2004 Hallo Chi ,beim Testen dieses Makros erscheint die Fehlermeldung "Laufzeitfehler 13" If .Cells(compRow, compCol).Value <> 0 Thenwird als Fehler markiert . Was mache ich falsch ?Liebe GrüsseEcart
Chi Lu Jung Geschrieben September 11, 2004 Geschrieben September 11, 2004 Hallo ecart,ist mein Fehler. Ich habe nicht bedacht, dass in einer Zelle auch ein nicht numerischer Wert stehen kann. Somit wird ein Text mit einer Zahl verglichen, was dann zur Fehlermeldung führt.Ersetzt die betrefende Zeile durchIf Val(.Cells(compRow, compCol).Value) <> 0 Then
Feuerstein Geschrieben September 11, 2004 Autor Geschrieben September 11, 2004 hallo chin!ich bin ganz schön begeistert! es wirkt hier so als schüttelst du das aus dem ärmel, aber ich glaube das hat auch einiges an zeit und nachdenken beansprucht. ich hab das macro einkopiert und es läuft so wie es laufen soll, mega>>> inclusive eines von mir gemachten fehlers bei meinen angaben. wahrscheinlich hast du es beim schreiben des macros bemerkt das da etwas fehlen müsste.die bedingung> =wenn(D11<>0) reicht nicht aus, er prüft anschließend logischerweise gleich wieder in D11, weil der wert in D11 stehenbleibt. komplett müsste es heißen> =wenn(und(D11<>0;C11<>istzahl);...ich kann jetzt nicht einschätzen ob diese veränderung eine kleine oder eine aufwändige ist. wäre es eine kleine, dann möchte ich dich gerne um die änderung bitte. ist es eine äufwendigere, dann muss es nicht sein das du dich nochmal dransetzt, weil ich D11 nach dem erhalt des ergebnisses in C11 ohne zirkelbezug auf null setzen kann und dann läuft´s auch, aber eleganter wäre es schon mittels macro.auf jeden fall hast du jetzt richtig einen bei mir gut, vielleicht musst du ja irgendwann mal lästige aufgaben verteilen. viele grüße, matthias s.
Chi Lu Jung Geschrieben September 11, 2004 Geschrieben September 11, 2004 Hallo matthias,das Makro zu erstellen ist gleich gemacht. Nur genau zu wissen, was du willst, dass ist die Schwierigkeit dabei. Wenn man nicht das gesamte Problem vorliegen hat, sondern nur ein Teil programmieren soll, kommt es zwangsläufig zu Abstimmungsschwierigkeiten. Das Makro prüft D11 nur einmal, wenn ein Wert für C11 kopiert wurde. D.h. es wird aus Spalte E der Wert in Spalte C11 kopiert und dann mit der Zeile D12 fortgefahren. Deswegen weiß ich nicht, was du meinst mit die bedingung> =wenn(D11<>0) reicht nicht aus, er prüft anschließend logischerweise gleich wieder in D11, weil der wert in D11 stehenbleibt.Es sei denn, du meinst das mehrmalige Aufrufen des Makros. Dann wird immer wieder bei D11 begonnen und somit D11 bei jedem Makroaufruf getestet.Also hier die gewünschte Verbesserung. Ersetze die Zeile If Val(.Cells(compRow, compCol).Value) <> 0 ThendurchIf Val(.Cells(compRow, compCol).Value) <> 0 And Not IsNumeric(.cells(compRow, targetCol).Text) Then Da ich immer noch nicht ganz dahinter gekommen bin, was genau du willst, wird dies leider ein Stückwerk bleiben. Diese Änderung bewirkt nämlich, dass bei einem Zahlenwert in C11 (bzw. Cxx) KEIN Wert in C11 eingetragen wird. Ich beschreibe einmal, was das Makro macht und du kannst dann überprüfen, ob dies richtig ist.1) Durchlaufe die Spalte D11 bis letzte, gefüllte Zeile in D2) In jeder Spalte (also D11, D12, D13 etc.) überprüfe, ob Dxx <> 0 ist und in Cxx keine Zahl steht. 3) Wenn ja, dann durchlaufe die Spalte Eyy (also E11, E12 etc.) bis zur letzten gefüllten Zelle in Spalte E.4a) Wenn die Zelle Eyy den Fehler "#Name?" enthält, dann schreibe den Wert von E(yy - 1) in Zelle Cxx (also für D11 in C11, für D12 in C12 etc.) und verlasse diese Schleife.4b) Falls in Spalte E kein Fehlerwert steht, erfolgt keine Aktion5) Fahre bei Punkt 1 mit der nächsten Zeile aus D fort
Feuerstein Geschrieben September 11, 2004 Autor Geschrieben September 11, 2004 die bedingung> =wenn(D11<>0) reicht nicht aus, er prüft anschließend logischerweise gleich wieder in D11, weil der wert in D11 stehenbleibt.Es sei denn, du meinst das mehrmalige Aufrufen des Makros. Dann wird immer wieder bei D11 begonnen und somit D11 bei jedem Makroaufruf getestet.hallo chin!damit habe ich nur verwirrung gestiftet. das macro hackte an einer stelle wo ein fehler im programm war. es rechnete nur bis zu dieser zeile, bei nochmaligem anklicken begann es natürlich von oben, wie du schreibst hat er nur deßhalb noch mal in D11 neu getartet.dein macro ist haargenau richtig für das was ich wollte, es läuft 1A. auch die einschränkung das in C11 nur ein wert einkopiert wird wenn C11 keinen zahlenwert enthält passt zufällig richtig. insofern ist es in kein stückwerk, es ist vollwertig.das es so eine sache ist mit den wenigen angaben von mir ist mir klar. auch die abstimmungsschwierigkeiten die auftreten wenn man nur einen anteil vom ganzen hat kenne ich ebenso. manchmal wenn ich nach ner auswertung gefragt werde und sich hinterher rausstellt das doch etwas leicht anderes gemeint war ist das teilweise auch schon mal anstrengend, aber ich geb mein wissen auch gerne weiter.wie gesagt, das macro läuft wie der teufel. deine beschreibung in worten (punkt 1 bis 5) ist auch noch einmal eine gute idee gewesen die schritte zu vergleichen und sicher gehen zu können, in den macrozeilen hätte ich es so lange nicht herauslesen können, das passt alles.vielen dank nocheinmal für deine prompte unterstützung grüße, matthias s.
Recommended Posts
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden