Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vertical Alignment Probleme

Forumthread: Vertical Alignment Probleme

Vertical Alignment Probleme
13.09.2002 10:26:55
Moritz
Hi zusammen!

Folgendes:

Set excel = CreateObject("Excel.Application")
Set ex = excel.Workbooks.open("C:\Ansprechpartner.xls")
'on error resume next
Excel.ActiveSheet.Cells.Select
Excel.Selection.VerticalAlignment = xlTop
'err.clear
ex.Save
excel.Quit
Set ex =Nothing
set excel = nothing

Bei diesem Code sagt mir die Kiste:
'Die VerticalAlignment-Eigenschaft des Range-Objektes kann nicht festgelegt werden.'
Warum geht das nicht?

Gruss, Mo

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Vertical Alignment Probleme
13.09.2002 10:43:10
ANdreas
Hallo Moritz,

erstmal versuch es besser ohne Select:
excel.ActiveSheet.Cells.VerticalAlignment = xlTop

Aber daran liegt es nicht, ich vermute mal in der geöffneten Tabelle ist ein Blattschutz gesetzt. Diesen dann vorher aufheben und vor dem Speichern wieder setzen! (nutze dazu .UnProtect bzw .Protect)

Hoffe das hilft weiter,
Andreas

Anzeige
Re: Vertical Alignment Probleme
13.09.2002 10:49:23
Moritz
Hat leider nicht geholfen!! AARGHHH!! Dieses Excel! Ich geh in die Klapse!
By the way, zu diesem Blattschutz, wird der Blattschutz eigentlich automatisch gesetzt wenn ixch ein neues Sheet generiere?

Grus, Mo

Re: Vertical Alignment Probleme
13.09.2002 11:08:13
ANdreas
Hallo Moritz,

Blattschutz wird nicht automatisch gesetzt!
Setze mal vor dem besagten Befehl folgende Zeile:
MsgBox excel.ActiveSheet.ProtectContents

Wenn die MsgBox "Falsch" anzeigt, dann muss es was anderes als der Blattschutz sein. Dann schreibe mal ob Du noch irgendwas "besonderes" in der Tabelle hast...

Andreas

Anzeige
Re: Vertical Alignment Probleme
13.09.2002 11:15:54
Moritz
Jo, er sagt 'Falsch'!
Ich generiere die Tabelle per VBS, hier mal der komplette Code:

Set excel = CreateObject("Excel.Application")
Set xlBook = Excel.Workbooks.Add
Set ex = xlBook.Sheets(1)
Set ps = ex.PageSetup
on error resume next
'############Headers on each page.

ps.LeftHeader = "&""Arial Black,Fett""&21VOITH PAPER"

ps.RightFooter = _
"&""Arial Black,Fett""&21VOITH" & Chr(10) & "&""Arial,Standard""&6GROUP OF COMPANIES"

ps.CenterFooter = "Page &P"
ps.Orientation = 2 '2 = xlLandscape => page orientated horizontaly

'######## Settings ############

excel.Columns("A:J").Select
Excel.Selection.HorizontalAlignment = -4131 'Alignment on the left of each cell

ex.Columns("A:J").WrapText = True
ex.Columns("E:J").ColumnWidth = 12
ex.Columns("A:A").ColumnWidth = 18
ex.Columns("B:B").ColumnWidth = 6
ex.Columns("C:C").ColumnWidth = 6
ex.Columns("D:D").ColumnWidth = 14

Excel.ActiveSheet.Cells..VerticalAlignment = xlTop <------- Hier das VerticalAlignment

ex.Cells.Font.Size = 6

'#########The thick lines (L2) at the top of the first page and the title ##########

ex.Rows("1:1").RowHeight = 2
ex.Range("1:1").Interior.ColorIndex = 5

ex.Rows.Range("A2") = "Verfahrensstufe"
ex.Rows.Range("B2") = "Bauart"
ex.Rows.Range("C2") = "Status"
ex.Rows.Range("D2") = "Name"
ex.Rows.Range("E2") = "Leitung COP (PG)"
ex.Rows.Range("F2") = "Konstruktion"
ex.Rows.Range("G2") = "Technologie"
ex.Rows.Range("H2") = "Projektierung"
ex.Rows.Range("I2") = "Abwicklung"
ex.Rows.Range("J2") = "Service"

ex.Rows("2:2").Font.Bold = True

ex.Rows("3:3").RowHeight = 2
ex.Range("3:3").Interior.ColorIndex = 5

Gras = False
Offset = 4
Hautini = 20.75 'Height of the page after the title <=> Hautini = 2*4 + 12.75
Haut = Hautini
HautLimit = 420 'Limit height of the page in order to call the page break

'############## Begin of the reading part ###########

For Ligne = 3 to tabcount

Ans1 = StrComp("L2", Tab(0, Ligne), 0)

If Ans1 = 0 Then 'Case it is a L1

If Haut > HautLimit then


ex.Rows(Offset).RowHeight = 0.5
ex.Range("A" & Offset & ":J" & Offset).Interior.ColorIndex = 5
Offset = Offset + 1

With excel.ActiveSheet
.HPAgeBreaks.Add .Range("A" & Offset )
End With


'Title of the subject on each pages
ex.Rows("1:3").Copy
ex.Rows(Offset).Select
ex.Paste

Haut = Hautini
Offset = Offset + 2

Else ' <=> If Haut < HautLimit


ex.Rows(Offset).RowHeight = 0.75
ex.Range("A" & Offset & ":J" & Offset).Interior.ColorIndex = 5

End If


Gras = False


Else '## <=> If Ans1 <> 0. Er schreibt hier den text ##

c = 0 ' c is the columns of the array (from 0 to 4)

For Asci = 65 to 74 ' <=> from A to J, the columns of the excel sheet
Col = Chr(Asci)
ex.Range(Col & Offset) = Tab(c, Ligne)
ex.Range(Col & Offset).Font.Bold = Gras

c = c + 1

Next

Gras = False

End If

RowH = ex.Rows(Offset).RowHeight
Haut = Haut +RowH
Offset = Offset + 1

Next

ex.Range("A1").Select

ex.SaveAs("C:\Temp\mdv\text" & zahl & ".xls")
err.clear
excel.Quit
Set excel = Nothing
Set xlBook = Nothing
Set ex = Nothing
Set ps = Nothing

Anzeige
Re: Vertical Alignment Probleme
13.09.2002 11:28:24
ANdreas
Hallo Moritz,

hab den relevanten Teil mal durchlaufen lassen, bei mir tritt kein Fehler auf. Aber ich vergaß vorhin dazuzuschreiben, dass Du keine Variable mit dem Namen excel vergeben solltest, benenne sie einfach um in varExcel oder so, vielleicht liegt es ja daran...

Andreas

Re: Vertical Alignment Probleme
13.09.2002 11:40:17
Moritz
Tja, leider geht es bei mir nicht, aber trotzdem vielen Dank für deine Mühen.

So sieht die Sache also aus nach deinen Angaben aus, habe das ganze mal über eine ganz normale Tabelle laufen lassen, da geht es auch nicht. Vielleicht hängt das ganze irgendwie an der Excel Version?

Set varExcel = CreateObject("Excel.Application")
Set ex = varExcel.Workbooks.open("C:\Ansprechpartner.xls")

varExcel.ActiveSheet.UnProtect
MsgBox varExcel.ActiveSheet.ProtectContents
varExcel.ActiveSheet.Cells.VerticalAlignment = xlTop
varExcel.ActiveSheet.Protect

ex.Save
varExcel.Quit
Set ex =Nothing
set varExcel = nothing

Gruss Mo

Anzeige
Re: Vertical Alignment Probleme
13.09.2002 12:28:24
ANdreas
Hallo Moritz,

die Sachen mit dem Blattschutz kannst Du alle wieder entfernen, war ja nur zum Testen.
Seltsam ist, dass es bei Dir bei HorizontalAlignment wohl fehlerfrei klappt.
Könnte eventuell an der Konstanten xlTop liegen?!? ersezte diese mal durch den Wert -4160:
varExcel.ActiveSheet.Cells.VerticalAlignment = -4160

Achso, hat es irgendeinen Grund warum Du extra eine neue Excelinstanz aufmachst???

Andreas

Anzeige
JAAAA!!!!!! DANKE!!!
13.09.2002 12:33:38
Moritz
Hasenrein, jetzt läufts wie geschmiert!

Mit der neuen Excelinstanz meinst du das 'Createobject'?
Das mache ich, weil das ganze eine automatisierte Anwendung auf dem Server ist und dort das Excel nicht ständig offen sein darf!

Nochmals vielen vielen Dank und ein schönes Wochenende!

Gruss, Mo

Anzeige
;
Anzeige

Infobox / Tutorial

Probleme mit der vertikalen Ausrichtung in Excel VBA beheben


Schritt-für-Schritt-Anleitung

  1. Excel-Anwendung erstellen
    Erstelle eine neue Instanz der Excel-Anwendung:

    Set varExcel = CreateObject("Excel.Application")
  2. Arbeitsmappe öffnen
    Öffne die gewünschte Arbeitsmappe:

    Set ex = varExcel.Workbooks.Open("C:\Ansprechpartner.xls")
  3. Blattschutz aufheben (falls notwendig)
    Wenn die Tabelle geschützt ist, hebe den Schutz auf:

    varExcel.ActiveSheet.UnProtect
  4. Vertikale Ausrichtung festlegen
    Setze die vertikale Ausrichtung der Zellen:

    varExcel.ActiveSheet.Cells.VerticalAlignment = xlTop
  5. Blattschutz wiederherstellen (optional)
    Setze den Blattschutz nach der Bearbeitung wieder:

    varExcel.ActiveSheet.Protect
  6. Änderungen speichern und Excel schließen
    Speichere die Arbeitsmappe und schließe die Excel-Anwendung:

    ex.Save
    varExcel.Quit

Häufige Fehler und Lösungen

  • Fehler: „Die VerticalAlignment-Eigenschaft des Range-Objektes kann nicht festgelegt werden.“

    • Lösung: Überprüfe, ob der Blattschutz aktiv ist. Verwende ActiveSheet.UnProtect, bevor du die vertikale Ausrichtung festlegst.
  • Fehler bei Verwendung von xlTop:

    • Lösung: Wenn das Setzen von xlTop nicht funktioniert, versuche den numerischen Wert -4160 zu verwenden:
      varExcel.ActiveSheet.Cells.VerticalAlignment = -4160

Alternative Methoden

  • Direktes Setzen der Ausrichtung ohne Select:
    Anstatt Cells.Select zu verwenden, setze die Ausrichtung direkt auf die Zellen:

    varExcel.ActiveSheet.Cells.VerticalAlignment = xlTop
  • Verwendung von Range-Objekten:
    Du kannst auch spezifische Bereiche angeben:

    varExcel.ActiveSheet.Range("A1:A10").VerticalAlignment = xlCenter

Praktische Beispiele

  • Beispiel für eine einfache vertikale Ausrichtung:
    Setze die vertikale Ausrichtung für die gesamte Spalte A:

    varExcel.ActiveSheet.Columns("A").VerticalAlignment = xlCenter
  • Anpassung mehrerer Bereiche:
    Setze die vertikale Ausrichtung für verschiedene Zellen:

    varExcel.ActiveSheet.Range("B1:B10, C1:C10").VerticalAlignment = xlTop

Tipps für Profis

  • Verwende Konstanten:
    Nutze die vordefinierten Konstanten wie xlCenter, xlTop oder xlBottom für mehr Lesbarkeit im Code.

  • Fehlerbehandlung einbauen:
    Implementiere Fehlerbehandlung, um unerwartete Probleme zu erkennen und zu beheben:

    On Error Resume Next
    varExcel.ActiveSheet.Cells.VerticalAlignment = xlTop
    If Err.Number <> 0 Then
      MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
    End If
  • Performance optimieren:
    Deaktiviere die Bildschirmaktualisierung während der Ausführung:

    varExcel.Application.ScreenUpdating = False

FAQ: Häufige Fragen

1. Warum kann ich die vertikale Ausrichtung nicht ändern?
Möglicherweise ist das Blatt geschützt. Hebe den Schutz mit ActiveSheet.UnProtect auf, bevor du Änderungen vornimmst.

2. Ist es notwendig, eine neue Excel-Instanz zu erstellen?
Es ist nicht zwingend notwendig, aber hilfreich, wenn du eine automatisierte Anwendung hast, um zu verhindern, dass Excel im Hintergrund offen bleibt.

3. Welche Excel-Version ist erforderlich?
Das VBA-Skript sollte in den meisten modernen Excel-Versionen funktionieren, jedoch ist es immer gut, die Kompatibilität zu überprüfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige