Zelladressen in String sammeln und gesammelte Zellen in einen Rutsch formatieren

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Soti.

    Zelladressen in String sammeln und gesammelte Zellen in einen Rutsch formatieren

    Hallöchen,

    ich arbeite an einem Excel-Add-in mit VB.NET. Stark vereinfacht erklärt, sammele ich aus einer Liste Zelladressen in einem String und möchte dann in einem Rutsch die gesammelten Zelladressen bearbeiten. Dies sieht in etwa so aus:

    Meine Tabelle aus der ich die Zelladressen sammele:
    1.ABCDEF
    2.1A1fettrotnormaldünner Rahmen
    3.2B1normalschwarzkursivkein Rahmen
    4.etc.





    Die Tabelle kann in manchen Fällen >10000 Zeilen beinhalten. In Spalte B ist die Zelladresse gelistet in Spalte D die Schriftfarbe. Angenommen ich sammele die für mich relevanten Adressen in einem String

    Dim sAdressen As String
    Dim TextD As String
    Dim I as Integer
    Dim ZeileMax as Integer

    ZeileMax = Globals.ThisAddIn.Application.ActiveWorkbook.Sheet(1).UsedRange.Rows.Count


    ‘In diesem Abschnitt sammele ich alle relevanten Zelladressen

    For i = 1 to ZeileMax

    TextD = Globals.ThisAddIn.Application.ActiveWorkbook.Sheet(1).cells(i, 4).Value.ToString

    If InStr(1, TextD, "schwarz”) Then

    If Len(sAdressen) < 2 Then
    sAdressen = TextD & ZeileLdA
    Else
    sAdressen = TextD & "," & ZeileLdA
    End If

    End if

    Next i


    Jetzt möchte ich auf einen Schlag die Formatierung der Zellen verändern, welche ich in dem String „sAdressen“ gesammelt habe. zB so:

    ws.Range(sAdressen).font.color = RGB(255, 255, 255)

    Ist der String < 255 Zeichen lang funktioniert das ganz gut. Ist er länger, geht es leider nicht.

    Hat jemand einen guten Tipp, was ich da machen kann? Ich möchte so wenig zwischen VB.Net und Excel hin und her schalten, da mich das enorm viel Zeit kostet (länger als 90 min bei einer mittelgroßen Datei).

    Ich hatte schon daran gedacht den String nicht größer als 255 Zeichen anwachsen zu lassen, also mehrere Strings bauen zu lassen. Die könnten dann wieder in einem Array unterkommen.


    Danke schon einmal im Voraus.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Soti“ ()

    je nachdem, wie der String aussieht, kann man evtl. ja was vereinfachen (nämlich wenn benachbarte Zellen begroffen sind).

    Ansonsten bei

    Soti schrieb:

    zwischen VB.Net und Excel hin und her schalten, da mich das enorm viel Zeit kostet (länger als 90 min bei einer mittelgroßen Datei).
    kann glaub gesagt werden, dass Excel-Interop hier seine Leistungsgrenze erreicht, und man vlt auf Datenbank-Technologie wechseln sollte.