Excel Zellen formatieren aus VB

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Mabbi.

    Excel Zellen formatieren aus VB

    Hallo zusammen,

    ich habe schon viele Tipps gefunden, in denen beschrieben wird wie man aus VB eine Exceldatei erstellt und mit Daten füllt.
    Aber wie kann ich die einzelnen Felder formatieren (oder selections machen und diese fomatieren)?

    Ich möchte unter anderem folgende Aktionen durchführen:
    -Bold
    -Textausrichtung ändern
    -Rahmen
    -Zellenfarbe ändern
    -Zeilenbreite an Zelleninhalt ausrichten

    Kann mir da jemand helfen?

    Vielen Dank,
    Andreas

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „AKrohn“ ()

    Meistens hilft schon der Macrorecorder weiter:

    VB.NET-Quellcode

    1. Sub Makro1()
    2. Selection.Font.Bold = True
    3. With Selection
    4. .HorizontalAlignment = xlCenter 'Textausrichtung ändern
    5. .VerticalAlignment = xlBottom
    6. .WrapText = False
    7. .Orientation = 0
    8. .AddIndent = False
    9. .IndentLevel = 0
    10. .ShrinkToFit = False
    11. .ReadingOrder = xlContext
    12. .MergeCells = False
    13. End With
    14. Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    15. Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    16. With Selection.Borders(xlEdgeLeft)
    17. .LineStyle = xlContinuous
    18. .Weight = xlThin
    19. .ColorIndex = xlAutomatic
    20. End With
    21. With Selection.Borders(xlEdgeTop)
    22. .LineStyle = xlContinuous
    23. .Weight = xlThin
    24. .ColorIndex = xlAutomatic
    25. End With
    26. With Selection.Borders(xlEdgeBottom)
    27. .LineStyle = xlContinuous
    28. .Weight = xlThin
    29. .ColorIndex = xlAutomatic
    30. End With
    31. With Selection.Borders(xlEdgeRight)
    32. .LineStyle = xlContinuous
    33. .Weight = xlThin
    34. .ColorIndex = xlAutomatic
    35. End With
    36. With Selection.Interior
    37. .ColorIndex = 6 'Zellenfarbe gelb
    38. .Pattern = xlSolid
    39. .PatternColorIndex = xlAutomatic
    40. End With
    41. Rows("1:1").EntireRow.AutoFit 'Zeilenbreite an Zelleninhalt ausrichten
    42. End Sub
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Hallo Agent,

    das ist schon klar, aber leider konnte ich natürlich den Code aus dem VBA-recorder nicht direkt in VB umsetzten.

    Durch viel versuchen habe ich dann aber folgende Lösungen gefunden:

    Dim oWks As Excel.Worksheet

    -Bold
    (das war leicht)
    oWks.Cells(1, 1).font.bold = True

    -Textausrichtung ändern
    oWks.Cells(1, 1).Orientation = 90 ' Ausrichtung 90Grad

    -Rahmen
    With oWks.Range(oWks.Cells(3, 1), oWks.Cells(3, 5)).Borders(Excel.XlBordersIndex.xlInsideHorizontal)
    .LineStyle = 1
    .Weight = 2
    .ColorIndex = 1
    End With


    -Zellenfarbe ändern
    oWks.Range(oWks.Cells(3, 1), oWks.Cells(3, 5)).Interior.ColorIndex = 35 '


    -Zeilenbreite an Zelleninhalt ausrichten
    oWks.Cells.EntireColumn.AutoFit() 'Gesamtes Tabellenblatt


    Viele Grüße,
    Andreas
    Falls jemand Probleme mit Option Strict ON und Late Binding Error hat wenn er das oben versucht, hier eine exemplarische Lösung:

    VB.NET-Quellcode

    1. Option Explicit On
    2. Option Strict On
    3. Imports Microsoft.Office.Interop
    4. ....
    5. Dim App As New Excel.Application
    6. Dim Book As Excel.Workbook = App.Workbooks.Add
    7. Dim Sheet As Excel.Worksheet = CType(Book.Sheets.Add, Excel.Worksheet)
    8. Sheet.Name = "Test"
    9. CType(Sheet.Cells.Range(Sheet.Cells(1, 1), Sheet.Cells(1, 50)), Excel.Range).Font.Bold = True


    Danke an Petaod und Dksksm, die beide bei der Lösung geholfen haben.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Mabbi“ ()