Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Word-Makro für Spaltenbreite

Betrifft: Word-Makro für Spaltenbreite von: Mirko
Geschrieben am: 04.06.2008 17:07:37

Hallo liebe VBA-Experten!

Ich weiß nicht ob Ihr "Excelianer" mir auch bei einem WORD Problem helfen könnt, aber ich versuch's mal. Ich habe eine einspaltige WORD-Tabelle mit zig Zeilen. In jeder Zeile steht ein Wert (z.B. 24,8). Nun benötige ich ein Makro, das den Inhalt jeder Zelle (bzw. Zeile) ausliest und die Breite der Spalte auf genau diesen Wert ändert (um bei dem Bsp. zu bleiben: die Spaltenbreite der Zelle, in der 24,8 steht, soll dann auch 24,8 cm breit sein).

Vielen Dank im voraus für jeden Tip und alle Bemühungen.

Mirko

  

Betrifft: AW: Word-Makro für Spaltenbreite von: fcs
Geschrieben am: 05.06.2008 05:38:29

Hallo Mirko,

machen kann man ja vieles, aber wozu soll dass gut sein?

Histogramme oder Balkendiagramme sollte man schon besser in Excel oder einem anderen geeigneten Programm erstellen und dann in Word einbetten.

Ansonsten probiere dein Glück mit dem folgenden Makro. Cursor in Tabelle positionieren, dann Makro starten.

Gruß
Franz

Sub Spaltenbreite()
'
' Spaltenbreite - Erstellt mit Word 97
' Ändert die Breite der  1. Zelle jeder Tabellenzeile entsprechend _
  dem eingetragenen Zahlenwert.
  Dim objTabelle As Table, objRow As Row, sngBreite As Single, objZelle As Cell
  Const sngBreiteMax As Single = 26 'max. Spaltenbreite in cm z.B. bei A4 Querformat
  'prüfen, ob Cursor in Tabelle positioniert ist
  If Selection.Information(wdEndOfRangeColumnNumber) > 0 Then
    'Tabellenobjekt zuweisen
    Set objTabelle = Selection.Tables(1)
    For Each objRow In objTabelle.Rows
      Set objZelle = objRow.Cells(1)
      With objZelle
        'Prüfen, ob Zellinhalt nummerisch
        If IsNumeric(Left(.Range.Text, Len(.Range.Text) - 2)) Then
          'Zahlenwert einlesen
          sngBreite = VBA.CSng(Left(.Range.Text, Len(.Range.Text) - 2))
          'ggf Breite begrenzen
          If sngBreite > sngBreiteMax Then sngBreite = sngBreiteMax
          .SetWidth columnwidth:=CentimetersToPoints(sngBreite), Rulerstyle:=wdAdjustNone
        End If
      End With
    Next
  Else
    MsgBox "Bitte Cursor vor Start des Makros in Tabelle positionieren!"
  End If
End Sub




  

Betrifft: AW: Word-Makro für Spaltenbreite von: Mirko
Geschrieben am: 05.06.2008 10:01:54

Hallo Franz,

vielen, vielen Dank für das Makro! Klappt wunderbar und ist genau das, was ich gesucht habe.

Nur zur Erklärung wofür ich das brauch: Ich bastel mir gerade eine Zeitleiste auf denen Persönlichkeiten und Ergeignisse abgebildet werden sollen. Die Länge der Spalten entspricht dabei dem Alter einer Person bzw. der Dauer eines Ereignisses.

Noch mal 1000 Dank! Tolles FORUM!!!!!


 

Beiträge aus den Excel-Beispielen zum Thema "Word-Makro für Spaltenbreite"