Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Spaltenbreite in mm mit VBA
#1
Smile 
Hallihallo Smile

Ich möchte ein Makro schreiben, dass die neue Spaltenbreite aus einer Zelle liest. Es sollen aber MILLIMETER sein. Steht in der Zelle 25, dann soll die Spalte 25 mm breit werden.

Blöderweise sind Excel-Werte für eine Spaltenbreite "schwankend". Bei "gleich bleibender Spaltebreite" variiert das metrische Maß je nach Schriftart und Schriftgröße. Gebe ich für die Breite z.B. "8" ein, dann sind das bei Anzeige unter "Ansicht / Seitenlayout" mal mehr oder weniger mm. Intern rechnet Excel also "irgendwie" in mm um ?!

Ein aufgezeichnetes Makro mit mm-Angabe im Seitenlayout-Fenster speichert den "falschen" Wert, die "mm-Eingabe" geht dabei leider verloren. Nachdem sich viele im Internet gefundene Makros als eher weniger hilfreich herausgestellt haben, wollte ich mir aus Beobachtung einige Umrechnugsfaktoren zurechtlegen, z.B. einen für Calibri 11 pt, einen für Arial 10 pt, und andere. Schriftart und Größe auslesen ist glücklicherweise kein Problem, daraus ergäbe sich "mein" Faktor.

Aber selbst dieser Umweg scheint von MicroSoft verbaut!

- Vorlage "Standard": auf Arial 10
- je eine Spalte auf 8 und 80 verbreitert
- nachlesen bei Seitenlayout: 17,15 mm und 157,27 mm ?!
- ich hätte "17,15 + 171,5" erwartet, oder "15,7 + 157,3" !!!!!

Frage 1:
Mit welcher Formel kann ich VERLÄSSLICH für Arial 10 die Spaltenbreite in mm berechnen? 

Frage 2:
Kennt jemand eine Microsoft-Entwickler-eMail-Adresse für Nutzer-Wünsche und Verbesserungsvorschläge?

Herzlichen Dank
Antworten Top
#2
Hallo,

musst du unbedingt dazu ein Makro haben? Du kannst die Breiten der Spalten bereits mit Bordmitteln sowohl auslesen als auch einstellen.

Dazu gehst du auf Ansicht / Seitenlayout. Mit Rechtsklick auf die gewünschte Spalte die Spaltenbreite anklicken. Es wird dir die Breite in cm mit zwei Dezimalstellen angezeigt. Das Umrechnen in mm dürfte zu schaffen sein. Wenn du die Spalten verbreiterst oder schmaler machst, wird dir das permanent angezeigt. OIn Klammern zusätzlich mit der entsprechenden Pixelzahl
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#3
Moin!
Da Du nicht der Erste mit diesem "Problem" bist:
Akzeptiere einfach, dass es sich bei Excel um eine Tabellenkalkulation handelt.
Hier sind keine exakten DTP-Vorgaben zu erfüllen, sondern der Schwerpunkt liegt immer noch auf der Kalkulation von Datenmodellen.

Warum nimmst Du nicht Word (welches dies relativ zuverlässig beherrscht) und überträgst die Daten aus der Kalkulation?

fragt sich Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
Hallo,

wenn ich das richtig verstanden habe, dann wird das eher ein totgeborenes Kind werden.

Warum?
Seit Einführung der TrueTyp-Schriften benötigt jede Schriftart eben nicht mehr gleichviel
Platz. Selbst wenn man für jede Schriftart eine eigene Routine schreiben würde, würde das
nichts bringen, denn die benötigte Spaltenbreite kann ja nicht an irgendwas Greifbarem
festgemacht werden.
Zitat:Beispiel (in jeder Zeile sind bei gleicher Schriftart und Schriftgröße fünf Zeichen): 

iiiii
wwwww
xxxxx

Die Zeit der Schreibmaschinenschriften, wo jedes Zeichen gleichviel Platz beanspruchte,
ist eben vorbei
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#5
Vielen Dank für Eure Gedanken Smile


(15.11.2018, 18:52)WillWissen schrieb: Dazu gehst du auf Ansicht / Seitenlayout. Mit Rechtsklick auf die gewünschte Spalte die Spaltenbreite anklicken.

eigentlich habe ICH schon erwähnt, wie das geht Wink


(15.11.2018, 18:55)RPP63 schrieb: Hier sind keine exakten DTP-Vorgaben zu erfüllen.

Ein bisschen Layout-Gestaltung möchte ich schon haben. Für Formulare muss ich am Anfang leider mit Spaltenbreite und Zeilenhöhe etwas experimentieren. Die Zeilenhöhe ist bei Excel zum Glück kein Problem, die wird in "Punkten" gespeichert. Aber bei der Spaltenbreite verwehrt EXCEL den Zugang, und rechnet nur "heimlich" um. Irgendwie ist EXCEL ja doch in der Lage, Spalten und Zeilen auf DIN-A4 zu verteilen, und ein verlässliches Layout anzuzeigen !? Ehrlich gesagt helfen mir Spaltenbreiten "AUSSCHLIESSLICH nach Anzahl einer 'mittleren Zeichenbreite' " überhaupt nicht. Ich habe noch nie gezählt, wie viele "mittlere" Buchstaben ich pro Spalte brauche.

Bei OpenOffice funktioniert das schätzungsweise seit 15 (!) Jahren. Werte und Formeln in die jeweiligen Randzellen schreiben, einige wenige manuelle Eingaben beeinflussen dabei andere Randzellen, was Excel natürlich auch kann. Im Anschluss das Makro starten. Neue Spaltenbreite dann nach Zellwert, dann eine Spalte nach rechts, und erst aufhören, wenn da kein Wert steht, eigentlich eine Kleinigkeit. Im Anschluss werden vom gleichen Makro ZEILEN angepasst. Zuerst also einige Randzahlen manipulieren, dann MAKRO starten = 1 (!) Klick, dann punktuell nachjustieren. Und anschließend EINFACH (!) Smile wieder starten. Kein mühsames Hin- und Herschalten mit der Seitenlayout-Ansicht und dazu noch steinzeitlich zwischen vielen Zellen wandern und manuell Zahlen eingeben.

Eher weniger konstruktiv wären jetzt aber Vorschläge wie: "Dann geh doch zu OpenOffice!".


(15.11.2018, 18:55)RPP63 schrieb: Warum nimmst Du nicht Word (welches dies relativ zuverlässig beherrscht) und überträgst die Daten aus der Kalkulation?

Interessanter Vorschlag, danke Smile . In WORD bin ich allerdings kaum "zu Hause". Wenn ich dort ein "embedded excel object" ansteuere, könnte VBA mir dabei helfen, die Spaltenbreite und Zeilenhöhe "metrisch" auszulesen bzw. anzupassen? Wie könnte der Code aussehen?
 
(15.11.2018, 19:52)Käpt\n Blaubär schrieb: wenn ich das richtig verstanden habe, dann wird das eher ein totgeborenes Kind werden.
Die Zeit der Schreibmaschinenschriften, wo jedes Zeichen gleichviel Platz beanspruchte, ist eben vorbei

Ich wollte mich nicht über TrueType-Schriften beschweren Wink . Mir ist unklar, warum Dich die Annahme beschäftigt, mir seien proportionale Schriften fremd.  Das sollte keinesfalls der Schwerpunkt meines Beitrages sein.

Unklar bleibt trotz alledem folgendes:

1.
Wenn ich bei EXCEL die Spaltenbreite von EXAKT 8 auf EXAKT 80 erhöhe, dann ist das doch EXAKT der Faktor ZEHN ?! Wenn ich bei beiden Breiten in der Seitenlayout-Ansicht die mm-Angaben nachlese, ergibt sich ein ANDERER Faktor, mit ERHEBLICHER Abweichung. Nach meiner Logik hätte das NICHT passieren dürfen. Ein "Verlust" von über 9 % ist nicht unerheblich. Bin ich denn der einzige, den das wundert?

2.
Und an welche eMail-Adresse könnte ich dem MicroSoft-Entwickler-Team Optimierungswünsche senden?

Dank im voraus Smile
Antworten Top
#6
Hallo,

Zitat:Mir ist unklar, warum Dich die Annahme beschäftigt, mir seien proportionale Schriften fremd. 

... beim besten Willen kann ich diese Aussage nicht in meinem Beitrag entdecken.
Vielleicht hättest Du Dich aber klarer ausdrücken können und vielleicht wäre es dann
auch für mich klarer zu verstehen gewesen.

Für Dein Vorhaben wünsche ich Dir viel Erfolg.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#7
(16.11.2018, 13:10)Käpt\n Blaubär schrieb: ... beim besten Willen kann ich diese Aussage nicht in meinem Beitrag entdecken.

siehe #4 ! Wink

Gruß Uwe
Antworten Top
#8
Hallo,

so als Ergänzung; Excel verwendet zur Berechnung von Spaltenbreiten und deren Umrechnung in Pixel verschiedenste Parameter, wie die voreingestellte Schriftart, ggf.
Druckereinstellungen und Windows-Einstellungen. Hier ein Artikel in Englisch dazu, der zwar etwas älter ist, aber immer noch seine Gültigkeit hat. Die Pixel wieder in
mm umzurechnen hängt dann wiederum von den DPI des Mediums ab, also z.B. Monitor, Druck usw. Siehe auch hier.

Da Excel laut dem ersten Link auch eine Art Aufrunden macht, wirst es also nicht 100 Prozent hinbekommen, exakt auf den mm genau eine Zellbreite festzulegen.
Du könntest probieren, eine Autoform (z.B. Rechteck) mit Text zu verwenden, wo Du ggf. genauer arbeiten kannst, ohne auf Zellen zu gehen.

Was die E-Mail-Adresse vom MS-Excel-Team betrifft, geben die diese wohl nicht raus, aber es gibt eine Vorschlagsseite, wo Du Wünsche äußern kannst.
Findest Du hier: https://excel.uservoice.com/ (nur in Englisch). User-Wünsche werden nach Votes berücksichtigt, je mehr User für einen Vorschlag abstimmen,
umso eher hat es eine Chance verwirklicht zu werden (ausser jetzt Bugs, die ggf. eher priorisiert werden).

Gruß
Microsoft Excel Expert · Microsoft Most Valuable Professional (MVP) :: 2011-2019 & 2020-2022 :: 10 Awards
https://de.excel-translator.de/translator :: Online Excel-Formel-Übersetzer :: Funktionen :: Fehlerwerte :: Argumente :: Tabellenbezeichner
Antworten Top
#9
Hallo Uwe,

da solltest Du schon deutlicher werden.
Ich habe doch hoffentlich nicht versucht, chinesisch zu schreiben.
Was ich verstehe ist, daß ich es nicht verstehe  :05:

oder meinst Du die Sache mit dem totgeborenen Kind?
Aber auch da habe ich nicht behauptet, daß dem TE "irgend was fremd ist".
Für meine Begriffe habe ich ganz einfach auf eine gestellte Frage geantwortet.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#10
Hallo Peter,

(16.11.2018, 13:56)Käpt\n Blaubär schrieb: Was ich verstehe ist, daß ich es nicht verstehe  :05:
so verstehe ich das auch. Smile

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste