![]() |
VBA relative Objekt Position - Druckversion +- Juergens-Workshops.de Forum (https://forum.juergens-workshops.de) +-- Forum: Corel Grafik Forum (https://forum.juergens-workshops.de/forumdisplay.php?fid=65) +--- Forum: Corel Draw (https://forum.juergens-workshops.de/forumdisplay.php?fid=93) +--- Thema: VBA relative Objekt Position (/showthread.php?tid=38284) |
RE: VBA relative Objekt Position - koter - 30.07.2021 Hallo Pucki, (29.07.2021, 22:21)Pucki schrieb: ...AUA. Das ist mir in über 30 Jahren Software-Entwicklung noch nicht bei einer Tabelle vorgekommen... Wirklich nicht? Manchmal ist es praktisch, alle Zellen in einer Schleife zu beackern. Das geht auch in Excel: Code: 'Excel Code (29.07.2021, 22:21)Pucki schrieb: ...Muss ich mich bei Corel daran gewöhnen oder gibt es auch ein Befehl wo ich die Vertikale Ausrichtung wie bei der horizontalen auch, via X , Y Koordinaten anweisen kann... Nein, Du kannst ja das Cell-Objekt benutzen, wie ich es im Beispiel meines letzten Beitrags getan habe. Damit kannst Du im Gegensatz zur Cells-Auflistung die Koordinaten verwenden. (29.07.2021, 22:21)Pucki schrieb: ...Ist nämlich echt lästig jedes mal über eine Funktion die Zelle berechnen zu lassen... Das musst Du nicht, Du kannst die Koordinaten einer Zelle einfach abfragen: Code: 'Spalte von Zelle 5 (29.07.2021, 22:21)Pucki schrieb: ...Wobei mir dann helfen würde, wenn mir Corel sagt wie viele Spalten aktuell hat... Auch das geht: Code: 'Anzahl Viel Spaß und viel Erfolg bei Deinem Projekt! Gruß Koter RE: VBA relative Objekt Position - Pucki - 30.07.2021 Unter VB geht das so bei EXCEL. Code: Imports Microsoft.Office.Interop.Excel.XlApplicationInternational Ist nur ein Ausschnitt aus den selben Programm was eine Kalkulationstabelle erstellt, aufgrund der Datensätze der Datenbank. Man gibt einen festen Kalkulationsfaktor in einer Zelle vor und der Computer/Excel berechnet die neuen Preis. Der Chef überprüft die, überschreibt die Formel mit einen anderen gewünschten Preis und gibt mir die Tabelle wieder. Meine Software liest die Daten (Artikel-Nr. und neuen Preis) wieder ein in die Datenbank. Nach den Einlesen klicke ich auf einen anderen Button und meine Software erstellt eine saubere und schöne Preisliste mit Corel die ich dann entweder zur Druckerei gebe o. was heutzutage eher wahrscheinlich ist, als PDF drucke und auf den Server der Firma lege. Aber im Code bei EXCEL immer mit Koordinaten. Deshalb war ich so erstaunt das Corel das anders macht. Aber nicht wirklich ein Problem, wenn ich es weiß. Dank deine Infos schreibe ich halt eine Funktion die X,Y in cells umrechnet. VIELEN DANK NOCHMAL. Jedenfalls sind aktuell keine Probleme in Sicht. Ach kleiner Tipp am Rande zu Excel. Wenn ich da ein Marko aufzeichne, editiere ich das Makro immer. Und löschen die erste Zeile mit den Range Befehl. Dann kann ich das Makro über JEDEN Bereich (eine Zelle ist auch ein Bereich) anwenden. Excel bereitet mir was VBA-Steuerung angeht keine größeren Probleme mehr. Hat mich aber auch fast 5 Monate gekostet bis der Tabellen so aufbaut per VB wie ich das will. ![]() Ich schreibe das alles nur zu Erklärung und falls es vielleicht mal ein Interessiert. Gruß Pucki RE: VBA relative Objekt Position - koter - 30.07.2021 Hallo Pucki, (30.07.2021, 10:36)Pucki schrieb: Dank deine Infos schreibe ich halt eine Funktion die X,Y in cells umrechnet. Genau das musst Du nicht! Wie ich in meinem letzten Beitrag (vielleicht zu umständlich) erklärt habe gibt es:
Gruß Koter RE: VBA relative Objekt Position - Pucki - 30.07.2021 So ein dummes S. ; ![]() Hab es gerade getestet. Jetzt ist es perfekt auch ohne eigener Funktion. Du hast echt keine Ahnung wie sehr du mir damit geholfen hast. Den es ist mehr als du dir vorstellen kannst. VIELEN DANK NONMAL . Gruß Pucki RE: VBA relative Objekt Position - Pucki - 20.08.2021 Ich hab noch eine Frage an die ich vorher nicht gedacht habe, weil sie so unsinnig ist. Gibt es eine Befehl der Corel sagt das er bei der Tabelle eine neue Zeile UNTEN hin setzt. tab_1.Custom.AddRow(1) <- setzt die neue Zeile OBEN HIN Ansonsten muss ich nämlich ziemliche Klimmzüge machen damit ich die Tabelle erstellen kann. Vielen Dank + Sorry das ich dich noch einmal nerve. Es hat mich gerade 2 Std. gekostet heraus zu finden, das der eine neue Zeile OBEN in der Tabelle hinsetzt. Gruß Pucki RE: VBA relative Objekt Position - koter - 20.08.2021 Hallo Pucki, (20.08.2021, 14:40)Pucki schrieb: Ich hab noch eine Frage an die ich vorher nicht gedacht habe, weil sie so unsinnig ist. Was ist daran unsinnig? (20.08.2021, 14:40)Pucki schrieb: Gibt es eine Befehl der Corel sagt das er bei der Tabelle eine neue Zeile UNTEN hin setzt. Ja, das Attribut des Befehls AddRow gibt die Zeile an, vor der eingefügt werden soll. In Deinem Beispiel also vor der ersten Zeile. Der Befehl Rows.Count gibt die aktuelle Anzahl der Zeilen aus. Wenn Du eine Zeile am Ende einfügen willst, könnte das so funktionieren: tab_1C.AddRow tab_1C.Rows.Count + 1 (Die Klammer kannst Du weglassen) Gruß Koter PS: Das Einzige, was bei Dir ein wenig nervt ist, dass Du immer meist Du würdest nerven! ![]() RE: VBA relative Objekt Position - Pucki - 20.08.2021 Zitat:Ja, das Attribut des Befehls AddRow gibt die Zeile an, vor der eingefügt werden soll. UI. Das sind die feinen aber nervigen ![]() Naja, ich hatte gedacht das wenigstens in VBA es irgend eine Art von Standard gibt. Falsch gedacht. Hast mir sehr geholfen. VIELEN DANK Gruß Pucki Zitat:PS: Das Einzige, was bei Dir ein wenig nervt ist, dass Du immer meist Du würdest nerven! Naja, ich bin es schon seit frühester Kindheit gewohnt, meine Probleme selbst aus zu knobeln und zu lösen. Vielleicht liegt das daran das man mir damals zu oft gesagt hat das ich nerve. ![]() RE: VBA relative Objekt Position - Pucki - 24.08.2021 Ich hätte da noch eine winzige Frage. Weißt du auch wie man den Linienstil ändert. Vor allen diese blöde Doppellinie weg bekommt. Ich möchte gerne eine etwas dicker Linie (0.5) UM die Tabelle und innen nur EINE Linie 0.25. Ich hoffe das ist möglich die Tabelle sieht nämlich aus wie eine Sammlung von Kästchen. ![]() Ansonsten wird die Preisliste schon perfekt aufgebaut. Die eine Preisliste mit 197 Teile auf 8 Seiten in ca. 8 Minuten, ohne das ich was machen muss. So habe ich mir das vorgestellt. Du hast vermutlich keine Ahnung wie viel Tage Zeit mir das erspart. Ist ja nicht die einzige die ich machen muss. Wir reden hier von ca. 1500 Bauteilen in 8 zusammen 8 Preislisten. Vielen Dank für deine nochmalige Hilfe im Voraus. Gruß Pucki RE: VBA relative Objekt Position - Pucki - 24.08.2021 Nachtrag: Und ich bräuchte den Befehl wie man den Mindestabstand zwischen Zelle und Text auf 0 setzt. Ich meine den Wert der wenn ich Zellen markiere und dann auf Ränder klicke auf 0,2 steht. Ich möchte alle Werte auf 0 stellen oder wenigstens oben + unten Wert. Das würde den Zeilenabstand verringern und ich bekomme mehr Zeilen auf eine Seite. Ist sogar gut für den Umweltschutz ![]() Vielen Dank auch dafür. Normalerweise bekomme ich solche Infos raus, in den ich die Makro-Aufzeichnung aktiviere, den Job selbst mache und dann schaue welche Befehle das Makro aufgezeichnet hat. Aber leider verweigert mir das Makro die Aufzeichnung mit den Spruch "kann ich aufgezeichnet werden". Weshalb ich noch eine Nebenfrage habe ? WOHER weißt du das alles. Ich tue mich sau schwer damit überhaupt etwas über Corel-VBA zu finden. Und die F1-Hilfe ist grausig bei Corel. Gruß Pucki RE: VBA relative Objekt Position - koter - 24.08.2021 Hallo Pucki, (20.08.2021, 16:28)Pucki schrieb: ...Naja, ich hatte gedacht das wenigstens in VBA es irgend eine Art von Standard gibt. Falsch gedacht. VBA ist durch und durch standardisiert. Was Du falsch gedacht hast ist, dass die Tabellen die Du gerade programmierst, Bestandteil von VBA sind. Das sind sie aber nicht, es sind Objekte von Coreldraw! (24.08.2021, 10:07)Pucki schrieb: ...Vor allen diese blöde Doppellinie weg bekommt...Ich möchte gerne eine etwas dicker Linie (0.5) UM die Tabelle und innen nur EINE Linie 0.25. Code: Sub TabRahmen() (24.08.2021, 11:16)Pucki schrieb: Nachtrag: Und ich bräuchte den Befehl wie man den Mindestabstand zwischen Zelle und Text auf 0 setzt. Das habe ich gleich mit in die Sub gepackt (in der For-Each-Schleife) (24.08.2021, 11:16)Pucki schrieb: ...Das würde den Zeilenabstand verringern und ich bekomme mehr Zeilen auf eine Seite. Ist sogar gut für den Umweltschutz... Das sieht aber scheußlich aus. (24.08.2021, 11:16)Pucki schrieb: ...WOHER weißt du das alles. Ich tue mich sau schwer damit überhaupt etwas über Corel-VBA zu finden. Und die F1-Hilfe ist grausig bei Corel... Ich programmiere schon länger mit VBA und kann mich nicht an alle Quellen erinnern. Über Tabellen aber stehen die meisten Informationen in der Referenz zum Objektmodell der Corel-Hilfe. Ich hatte z.B. vergessen wie man den Textfeldabstand setzt. Ein kurzer Blick in die Hilfe hat es mir verraten: ![]() Deine recht scharfe Kritik an der Hilfe kann ich also nicht teilen. Gruß Koter |