Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1540to1544
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kann man mit Makro Zellformat ändern? Teil 2

Kann man mit Makro Zellformat ändern? Teil 2
09.02.2017 08:37:57
Jenny
da man im ersten Teil wohl bald nicht mehr antworten kann, wie Luc meint...
Hallo Luc,
erstmal erneut danke für deine ausführlichen Erklärungen.
Du siehst irgendwo hoffentlich mein Problem, durch deine Vorschläge wird eine so schon sehr (für meine Verhältnisse) komplexe Tabelle nochmal deutlich ausgeweitet und das diesmal mit Dingen, bei denen ich kaum noch verstehe, was da passiert.
Ich müssste jetzt mehrere VBA Routinen benutzen, die das gane deutlich komplexer machen benutzen um kleine Abweichungen bei 24 von 13472 also 0,18% der Zeilen zu vermeiden.
Zu dem Sub Spalte E, das Sub hat ja den Sinn, nur die Formeln neu zu berechnen, deren Werte sich geändert haben, ich habe also ohne 13 Minuten Wartezeit immer eine aktuelle Tabelle. Wenn ich die Berechnung ausschalte habe ich das nicht.
Gruß
Jenny
PS: Hier der Archivthread wie von dir vorgeschlagen:
https://www.herber.de/forum/archiv/1536to1540/t1538435.htm

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Problem der richtigen Reihenfolge
09.02.2017 14:42:04
Werner
Hallo Jenny,
das Problem mit der "Nichtanzeige" von #NV ist gelöst. War nur ein Problem der richtigen Reihenfolge im Code.
Sub SpalteE(ByVal Target As Range)
Dim lngR As Long
lngR = Target.Row
'Cells(lngR, 2).FormulaR1C1 = Cells(1, 2).FormulaR1C1
Cells(lngR, 3).FormulaR1C1 = Cells(1, 3).FormulaR1C1
'Cells(lngR, 6).FormulaR1C1 = Cells(1, 6).FormulaR1C1
'Cells(lngR, 8).FormulaR1C1 = Cells(1, 8).FormulaR1C1
'Cells(lngR, 9).FormulaR1C1 = Cells(1, 9).FormulaR1C1
Cells(lngR, 10).FormulaR1C1 = Cells(1, 10).FormulaR1C1
Cells(lngR, 11).FormulaR1C1 = Cells(1, 11).FormulaR1C1
'Cells(lngR, 12).FormulaR1C1 = Cells(1, 12).FormulaR1C1
Rows(lngR).Copy
Cells(lngR, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
If Cells(lngR, 3) > 0 Then
Cells(lngR, 3).NumberFormat = "DD.MM.YYYY"
ElseIf Cells(lngR, 3).Value  0 Then
Cells(lngR, 10).NumberFormat = "DD.MM.YYYY"
ElseIf Cells(lngR, 10).Value  0 Then
Cells(lngR, 11).NumberFormat = "DD.MM.YYYY"
ElseIf Cells(lngR, 11).Value 
Bezüglich der "Automatisierung": Da sollte ich eine Datei haben in der alle Daten vorhanden sind, die auch in deiner Originaldatei vorhanden sind. Insbesondere auch Daten in Spalte D, die ja im oberen Bereich leer ist aber irgendwann im unteren Bereich dann Daten enthält.
Mit der mir vorliegenden Datei kann ich so nicht viel anfangen, da sind die Spalten ja überwiegend leer.
Gruß Werner
Anzeige
AW: Problem der richtigen Reihenfolge
09.02.2017 14:51:58
Jenny
Hallo Werner,
da hab ich das Problem der Größenbeschränkung, die Datei hat 2,1 MB.
Hast du eine Email Adresse oder so?
Mir sind noch 2 Dinge jetzt bei der Automatisierung aufgefallen, ohne die leider das ganze in die Hose gehen wird, aber ich denke das wird nicht sehr viel Mehraufwand.
1. Was ich dir gesagt habe, um die längste Zeile zu bestimmen, dass du da nach den Texten in Spalte A und E gehen kannst, stimmt leider nicht ganz. Unter ganz bestimmten Umständen kann es noch eine weitere Zeile mit diesen Kriterien geben. Wenn du aber als 3. Kriterium nimmst, das Spalte D leer ist, ist es eindeutig.
2. Das mit dem Sub Spalte E das ich unter Punkt 9 geschrieben hatte, brauche ich noch ein zweites mal während dem Ausühren des Makros.
Und zwar direkt am Anfang, nachdem die 3 Grenzen bestimmt wurden.
In dem Fall reicht aber ein stark verkürztes Sub. Es reicht, wenn die Spalte F berechnet wird und es müssen auch nur die allerletzten Zeilen berechnet werden, die in denen was in Spalte D steht.
Also gemäß meines Beispiels F13015 bis F13150.
Hintergrund ist, solang in F #NV in diesen Zeilen steht, kann ich nicht unter Punkt 8 danach sortieren.
Gruß
Jenny
Anzeige
AW: Problem der richtigen Reihenfolge
09.02.2017 15:08:19
Werner
Hallo Jenny,
ich brauche ja keine Datei mit 13000 Zeilen. Du kannst ja zwischendrin Zeilen rausschmeißen. Ich sollte halt nur eine Datei haben, die im Aufbau dem Original entspricht und bei der Spalte D dann auch nur am Ende gefüllt ist. Zur Not kannst du die Datei dann ja noch Zippen.
Das mit dem #NV klappt jetzt wie gewünscht?
Gruß Werner
AW: Problem der richtigen Reihenfolge
09.02.2017 15:20:17
Jenny
Hallo Werner,
hab um halb 5 nen Arzttermin, komme vorher nicht zum testen sorry, genauso wenig wie dazu ne Bsp. Mappe zu machen aber spätestens morgen hast du eine Antwort.
Jenny
Rückmeldung vom Test
09.02.2017 22:44:00
Jenny
Hallo Werner,
leider immer noch nicht so ganz,
mein Makro hatte nach dem Ausführen die Zelle markiert, an der die Änderung an Spalte E stattgefunden hat, deins markiert die ganze Zeile.
Jetzt muss ich jedesmal von Hand diese Zelle markieren um weiterarbeiten zu können.
Gruß
Jenny
Die Bsp Mappe gibts morgen.
Anzeige
Leider noch was. das nicht mehr klappt
09.02.2017 23:14:30
Jenny
Hallo Werner,
leider noch was das nicht mehr klappt,
die Texte aus der Spalte E kommen aus dem Internet,
wenn ein neuer hinzukommt, kopiere ich ihn in die erste freie Zelle und das Makro macht, was es soll.
Brauche das ganze dann aber in bis zu 10 Zeilen, also bin ich hingegangen und habe dann den ersten Text kopiert und in soviele weitere Zellen gleichzeitig eingefügt, wie ich ihn gebraucht habe.
Und das Makro hatte in allen dieser Zeilen gerechnet.
Dein Makro berechnet nur die erste Zeile, muss also 10mal kopieren und einfügen statt einmal wie bislang.
Gruß
Jenny
Anzeige
Bsp. Mappe
10.02.2017 13:40:26
Jenny
Hallo Werner,
selbst jetzt wo ich alles gelöscht habe, was für das Makro nicht gebraucht wird, lande ich immer noch bei 351 KB, selbst mit Winrar als Zip Datei mit der besten Komprimierung komme ich nicht unter 300 KB.
Was nun?
Gruß
Jenny
AW: Bsp. Mappe
10.02.2017 17:56:13
Werner
Hallo Jenny,
anbei nochmals deine Beispielmappe. In der ist jetzt aber nur das Problem mit dem #NV sowie dem Markieren der einzelnen Zelle behoben, zu mehr bin ich noch nicht gekommen.
https://www.herber.de/bbs/user/111371.xlsm
Gruß Werner
AW: Bsp. Mappe
10.02.2017 19:46:49
Jenny
Hallo Werner,
abgesehen von der anderen Nachricht, das Problem mit dem NV ist leider noch nicht behoben.
Mach mal folgendes, in deiner letzten Mappe, kopier mal E48, dann markier E49:E52 und füg es ein, da sind vorher alle Zeilen berechnet worden.
Gruß
Jenny
Anzeige
AW: Bsp. Mappe
11.02.2017 09:33:54
Werner
Hallo Jenny,
ich hatte ja auch gemeint, das Problem mit dem Markieren der einzelnen Zelle (Target) nach Makrodurchlauf. Das Problem mit dem einkopieren mehrerer Werte hatte ich mir da noch nicht angeschaut.
Aber jetzt. Nicht wundern, ich habe Makros in ein allgemeines Modul ausgelagert. Die haben im CodeModul des Tabellenblattes eigentlich nichts zu suchen. Das hatte aber nichts damit zu tun, dass es nicht richtig funktioniert hat.
Schau es dir mal an. Beim Rest kann ich dir im Moment noch nicht sagen, wie ich zeitlich dazu komme. Werde mich melden.
https://www.herber.de/bbs/user/111379.xlsm
Gruß Werner
Anzeige
AW: Bsp. Mappe
11.02.2017 12:50:26
Jenny
Hallo Werner,
das sieht soweit super aus, falls mir nichts mehr bei Langzeittests auffällt.
Kannst dir gerne was Zeit lassen, ich denke mal nächste Woche werde ich das neue Makro nicht brauchen. Und wenn alle Stricke reißen ist das neue Makro ja nichts, was man nicht von Hand machen kann, auch wenn es was länger dauert.
Eine allgemeine Frage hab ich noch, was genau für einen Vorteil bringt die Auslagerung in ein Modul?
Gruß und schönes Wochenende
Jenny
AW: Bsp. Mappe
11.02.2017 16:02:45
Werner
Hallo Jenny,
zur Frage: Ich finde einfach es ist übersichtlicher wenn ich im TabellenblattModul auch nur die Makros drin habe die dort unbeding hin müssen.
Bin zwischenzeitlich noch ein paar Schritte weiter. Bis Punkt 3 bin ich durch.
Ermitteln letzteZeile / letzteSpalte - steht
Ermitteln des freien Bereichs in Spalte D - steht
Formeln in den freien Bereich in D - steht
Formeln durch Werte ersetzen in D - steht
Bereich M1 bis letzte Zeile / letzte Spalte - steht
Jetzt kommt das Sortieren, da werde ich heute aber nicht mehr dazu kommen.
Zum Testen habe ich momentan für diese Zwischenschritte eine Schaltfläche auf Blatt 1. Schicke dir den Zwischenstand mal per Mail.
PS: Derzeit sind da noch ein paar Makros drinn, die ich nur zum Testen gebraucht habe, die fliegen nachher wieder raus.
Gruß Werner
Anzeige
AW: Bsp. Mappe
15.02.2017 11:17:52
Jenny
Hallo Werner,
in deiner Bsp. Mappe funktioniert das, aber wie mache ich dass das mit meinen Verketten Formeln die bereits in einem Modul stecken auch funktioniert?
Gruß
Jenny
PS: benutze jetzt erstmal wieder mein ursprüngliches Makro, neue negative Zahlen gibts im Moment sowieso nicht.
AW: Bsp. Mappe
15.02.2017 13:18:38
Werner
Hallo Jenny,
hab dir ne Mail geschickt.
Gruß Werner
Hinweise (von meiner Seite abschließend)
12.02.2017 01:59:18
meiner
Ich wollte mich zu deinem Problem eigentlich nicht mehr äußern, Jenny,
aber …
1. komplex ist anders und …
2. sehe ich in Werners letzter BspMappe immer noch einen Mischmasch aus verschiedenen Formaten!
Das ist nicht erforderlich!
Ich schlug es bereits vor:
1. Speichere alle Datumsangaben als Texte wie sie auch in der Quelle stehen!
2. Überlasse die Umwandlung historischer Datumsangaben, die auch solche vor dem 1.3.1900 umfassen, niemals Xl-Routinen! Du bereitest dir nur Probleme damit und musst Daten nachbessern (auch, wenn's zZ nur 24 sind).
3. Verwende bei großen Datenmengen komplett VBA — auch zur Berechnung von Differenzen, Rängen usw. Die undokumentierte Xl-Fkt DATEDIF stimmt nicht mit der fast gleich­namigen vbFkt DateDiff überein, und nicht nur, weil die Argumente­Reihenfolge eine andere ist (s.4.)!
4. VBA verwendet alle typischen Xl-Datumsfktt nicht, nur folgende sind im WorksheetFunction-Container enthalten:
.Days360, .Weekday, .WeekNum, .WorkDay, .WorkDay_Intl und .YearFrac
Für alles Andere hat VBA eigene Fktt, die auf der Basis des genauen und viel weiter reichenden VBA-, nicht des (vor dem 1.3.1900) ungenauen Xl-Tages­zählers arbeiten.
Es ist auch sinnlos, die Xl-Fktt in VBA einfach per vbFkt Evaluate zu berechnen. Sie würden auch dann Daten vor dem 1.3.1900 nicht richtig berechnen!
5. Was sind das für DatumsAngaben, dass du dir sicher sein kannst, dass die kritischen Daten stets in der Größen­Ordnung von 2-3 Dtzd bleiben wdn? Auf jeden Fall sieht das, wie es jetzt ist, nicht nur unschön aus, sondern diese Daten sind auch Fehler­Quellen!
6. Du musst meine UDFs ja nicht verwenden (obwohl man das auch in einer VBA-SubProzedur kann), aber nutze wenigstens die vbFktt, die ihnen zugrunde liegen, zum Umrechnen (und Auswerten) der Daten, dann bist du auf der sicheren Seite! Allerdings sehe ich, dass Werner Fmln neu schreibt. Das könnten dann auch solche mit UDFs sein. Für das Umrechnen in VBA-Tages­zähler wäre das ein ein­maliger Aufwand pro Datensatz­Import (Datums­Angaben als Texte), falls du für die Tages­zähler eine eigene Spalte benutzt. Mit diesen Zahlen fktionieren dann alle normalen Xl-Fktt problem­los, nur nicht Datums­Formate und -Fmln! Sie könnten auch mit Xl (oder der Xl-Methode in VBA) sortiert wdn (am besten als Zahl ohne Fml, wie es auch jetzt schon -überwiegend- auf deinen Blättern aussieht).
Ich kann nur hoffen, dass evtl Tabellen auf dieser Datenbasis die DatumsAngaben nicht auch in dieser Form zeigen, denn so etwas habe ich noch nie gesehen. Als verantwortlicher Herausgeber würde ich so etwas auch nicht zulassen.
Gruß, Luc :-?
PS: Ich habe den begründeten Verdacht, dass Werner (leider scheint er meine Hinweise nicht gelesen zu haben oder beachten zu wol­len!) zZ nicht an deinem eigentlichen (Primär-)Problem (Berechnungen), sondern deinem selbst­organi­sierten momen­tanen (Sekun­där-)Problem arbeitet. Was ist, wenn das letztlich doch anders gewünscht wird oder du dich beim Daten­Anpassen für Berech­nungen irrst? Geht dann alles wieder von vorne los…?
Übrigens habe ich im Archiv noch einen Link hierher nach­getragen. Werner scheint nicht zu wissen, wie man dort noch (eine zeitlang) antworten kann, aber außer mir noch einige Andere, nur hatten die sich an deinem
Thread nicht beteiligt…
Besser informiert mit …
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige