Word Makro Zeilenbreite in Pixel angeben

yxy

Lieutenant
Registriert
Juli 2014
Beiträge
570
Hallo,

ich würde geren durch ein Makro einen Button einfügen der mir bei Betätigung alle Spalten auf eine gewisse Pixelbreite einstellt.

Ich habe bereits den Befehl
Columns("A:X").ColumnWidth = ....
gefunden. Allerdings kann ich damit die Breite nur als Char-Zahl eingeben (d.h. die Zahl die einem in Excel angezeigt wird, wenn man die Spaltenbreite manuell ändert).
Ich möchte aber die Pixelzahl vorgeben.

Habe dazu Folgendes im Netz gefunden. Leider verstehe ich noch nicht, was das "Programm" macht. Was haben die Zahlen 96 und 72 zu bedeuten? Vielleicht habt ihr ja eine Idee.

Code:
Sheets("Tabelle1").Activate 

screenres = 96 '96/inch

mypoints = Sheets("Tabelle1").Range("A1").Width

'> returns 48 points

mychars = Sheets("Tabelle1").Range("A1").ColumnWidth

'> returns 8.43 chars

mypixels = (mypoints / 72) * screenres 'pixel width of column

Debug.Print mypoints, mychars, mypixels

'> returns 48 8.43 64
 
aus dem internetz (von 2006)
Das Einstellen der Zeilenhöhe in Zentimetern ist relativ einfach: Excel verwendet neben der Angabe in Pixeln die Masseinheit «Punkt» - gemeint ist der typografische Punkt, der 1/72 Zoll gross ist. Umgerechnet ist 1 Punkt = 0,035277778 cm. Soll die Zeile 0,5 cm hoch sein, dann muss die Höhe also auf 0,5/0,035277778 = 14,17 Punkt eingestellt werden.

Schwieriger wird es bei der Spaltenbreite. Die Excel-Angabe der Breite entspricht der Durchschnittsanzahl der Ziffern 0 bis 9 in der Standardschriftart, die in eine Zelle passen. Da diese Angabe von der gewählten Schriftart abhängt, ist sie nicht für exakte Angaben geeignet, denn je nach Drucker fällt die Breite der Schrift auf dem Bildschirm und auf unterschiedlichen Druckern ebenfalls unterschiedlich aus. Eher geeignet ist für die Spaltenbreite die Angabe in Pixeln. Ein Pixel hat zwar ebenfalls keine feste Breite, wenn man jedoch die Auflösung hinzunimmt, dann lassen sich auch Pixel in Zentimeter umrechnen. Je nach Auflösung ist ein Pixel mal grösser, mal kleiner: Betrachten Sie eine Tabelle auf einem Bildschirm mit einer Auflösung von 800*600 Pixeln, erscheint sie grösser als auf einem Bildschirm mit einer Auflösung von 1024*768 Pixeln. Analog verhält es sich beim Drucken: Je höher die Auflösung, um so kleiner wird die Tabelle. Relativ gesehen bleibt jedoch die Breite immer gleich, weil sich Inhalt und Breite gleichermassen ändern.

Excel erleichtert die Umrechnung von Pixeln in Zentimeter, weil es - unabhängig von der Auflösung des Druckers - Tabellen immer mit 96 dpi druckt. Die Umrechnung können sie mit der Excel-Funktion UMWANDELN vornehmen (sie ist Teil der Analyse-Funktionen, dieses Add-In muss also installiert sein):

=96/(UMWANDELN(1;"in";"m")*100)

Das Kürzel «in» steht für «inch», das englische Wort für Zoll. Die Einheit «cm» existiert für die Funktion UMWANDELN nicht, sondern nur «m». Deshalb muss das Resultat zum Schluss mit 100 multipliziert werden, um die Zentimeter zu berücksichtigen. Das Ergebnis sind 37,8 Pixel. Da jedoch nur ganze Pixel erlaubt sind, runden Sie auf 38 Pixel auf. Die dadurch entstehende Abweichung auf 10 cm beträgt ca. 1mm, ist also tolerierbar.

Excel kommt halt aus den USA, eins von 3 Ländern, die Messtechnisch noch im 18/19. Jh feststecken.
 
Zuletzt bearbeitet:
Achso, vielen Dank für dein Zitat!

dann erklärt sich das Programm so:
Code:
mypoints = Sheets("Tabelle1").Range("A1").Width
Gibt mir die Spaltenbreite in Punkten an
Code:
mychars = Sheets("Tabelle1").Range("A1").ColumnWidth
Gibt mir die Spaltenbreite in Char an (Char ist definiert durch die Durchschnittsanzahl der Ziffern 0 bis 9 in der Standardschriftart, die in eine Zelle passen. Verstehe ich das richtig?: Wenn 3 dieser Durchschnittszahlen in eine Zelle passen -ohne einen Umbruch bzw. dass ein Teil des Texstes in die nächste Zelle hineinragt - wäre der char-Wert dann 3?)
Code:
mypixels = (mypoints / 72) * screenres 'pixel width of column
Rechnet mir die Spaltenbreite in Punkte zunächst in Zoll um (/72) und dann in Pixel um (*96). Denn Excel druckt Tabellen immer mit 96dpi =96dots per inch, englisch für „96 Punkte pro Zoll“.
 
Zurück
Oben