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:
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.
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. | A | B | C | D | E | F |
2. | 1 | A1 | fett | rot | normal | dünner Rahmen |
3. | 2 | B1 | normal | schwarz | kursiv | kein 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“ ()