Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1232to1236
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variable/Zelle mit mehr als 256 Zeichen

Variable/Zelle mit mehr als 256 Zeichen
Andy
Hallo,
den folgenden Code nutze ich für die Überprüfung von Namen in einer Torschützenliste, ob diese Namen in einer weiteren Tabelle vorhanden sind.
In der Spalte D:D stehen die Torschützen hintereinander, Vorname Nachname getrennt durch ein Komma.
In der weiteren Liste (auf dem Sheet Torjäger), deren Inhalt überprüft wird stehen alle Namen incl. Vornamen untereinander in der Spalte E:E
Im Bereich D:D werden jetzt alle Namen blau markiert, wenn sie in der Tabelle E:E (Torjäger) vorhanden sind.
Der Code funktioniert soweit ganz gut. Doch jetzt gib es ein Ergebnis mit über 20 Toren (in der Spalte D:D), in der Zelle stehen mehr als 256 Zeichen. Es erscheint seitdem die Fehlermeldung 13 "Typen unverträglich) Ich habe beim Googlen einen Hinweis gefunden, dass das wohl daran liegt, dass in der Zelle (in D:D) mehr als 256 Zeichen enthalten sind. Die Zelle kann ich nicht spliten. Wie muss mein Code angepaßt werden, damit er wieder funktioniert?
Beim Debuggen markiert Excel mir die Zeile: " If Application.CountIf(Sheets("Abfrage_Spieler").Range("E:E"), NameX) > 0 Then"

Sub Abgleich()
Columns("D:D").Select
Dim i As Long, j As Byte, c As Range, NameX As String, arrNamen
Dim von As Integer, bis As Integer, k As Byte
For i = 2 To Range("D" & Rows.Count).End(xlUp).Row
Set c = Range("D" & i)
For k = 1 To Len(Trennzeichen)
arrNamen = Split(c, Mid(Trennzeichen, k, 1))
If Not IsEmpty(c) Then
For j = 0 To UBound(arrNamen)
NameX = Trim(arrNamen(j))
If Application.CountIf(Sheets("Torjäger").Range("E:E"), NameX) > 0  _
Then
von = 0
Do
von = InStr(von + 1, c, NameX)
If von = 0 Then Exit Do
bis = Len(NameX)
With c.Characters(Start:=von, Length:=bis).Font
.ColorIndex = 5 '5= Blau; 4= Grün; 3=rot
End With
Loop
End If
Next j
End If
Next k
Next i
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Variable/Zelle mit mehr als 256 Zeichen
16.10.2011 13:50:31
Tino
Hallo,
kannst Du mal ein Beispiel hochladen?
Wo ist die Variable Trennzeichen deklariert?
Gruß Tino
AW: Variable/Zelle mit mehr als 256 Zeichen
16.10.2011 20:28:15
Andy
Hallo Tino,
ich habe eine Beispieldatei hochgeladen: https://www.herber.de/bbs/user/77038.xlsm
Die Trennzeichendeklarierung steht ganz oben im Code.
Gruß
Andy
AW: Variable/Zelle mit mehr als 256 Zeichen
16.10.2011 21:26:15
Daniel
Hi
so ganz blick ich nicht, was da läuft.
aber die Schleife über die Trennzeichen halte ich für schlecht und ggf Fehlerverusachend.
besser wäre hier meiner Ansicht, mit

Sheets("Abfrage").Columns(4).Replace ";", ",", xlpart
Sheets("Abfrage").Columns(4).Replace ".", ",", xlpart
Sheets("Abfrage").Columns(4).Replace ":", ",", xlpart

sicherzustellen, daß nur ein Trennzeichen vorkommt und dann die Schleife über Trennzeichen wegzulassen
Gruß, Daniel
Anzeige
AW: Variable/Zelle mit mehr als 256 Zeichen
16.10.2011 21:30:01
Tino
Hallo,
kannst mal diesen Code testen.

Sub Abgleich()
Dim ArrayNamen, rngBereich As Range, n&
Dim Regex As Object, objMatch As Object
Const intColor% = 5 '5= Blau; 4= Grün; 3=rot 

With Sheets("Vergleichsliste")
    n = .Cells(.Rows.Count, 5).End(xlUp).Row
    If n < 2 Then Exit Sub
    ArrayNamen = .Range("E2", .Cells(n, 6)).Value2
    Redim Preserve ArrayNamen(1 To Ubound(ArrayNamen), 1 To 1)
End With

With Sheets("Abfrage")
    n = .Cells(.Rows.Count, 4).End(xlUp).Row
    If n < 3 Then Exit Sub
    Set rngBereich = .Range("D3", .Cells(n, 4))
End With

Set Regex = CreateObject("Vbscript.Regexp")

With Application
    .ScreenUpdating = False
    .EnableEvents = False
    
    rngBereich.Font.ColorIndex = xlAutomatic
    
    With Regex
        .MultiLine = True
        .Global = True
        .IgnoreCase = True
        For Each rngBereich In rngBereich
            For n = 1 To Ubound(ArrayNamen)
                ArrayNamen(n, 1) = Trim$(ArrayNamen(n, 1))
                If InStr(ArrayNamen(n, 1), "+") = 0 Then
                    .Pattern = " +"
                    ArrayNamen(n, 1) = .Replace(ArrayNamen(n, 1), " +")
                End If
                .Pattern = Trim$(ArrayNamen(n, 1))
                If .test(rngBereich.Value) Then
                    For Each objMatch In .Execute(rngBereich.Value)
                         With rngBereich.Characters(objMatch.FirstIndex + 1, Len(objMatch)).Font
                            .ColorIndex = intColor
                         End With
                    Next objMatch
                End If
            Next n
        Next rngBereich
    End With
    
    .ScreenUpdating = True
    .EnableEvents = True
End With
End Sub
Gruß Tino
Anzeige
AW: Variable/Zelle mit mehr als 256 Zeichen
17.10.2011 17:55:04
Andy
Funktioniert.
Danke für die Unterstützung!
leider doch nicht
17.10.2011 20:38:35
Andy
Hallo Tino,
auf dem ersten Blick funktionierte das Testscript mit den Testdaten.
Mit den Originaldaten läuft es dagegen leider nicht richtig. Wenn in einer Torschützenzelle (Sheet:Abfrage Spalte D) "keine Torschützen" steht wird dieser Eintrag ebenfalls gefärbt. Dabei ist mir aufgefallen, dass immer alle Einträge eingefärbt werden, egal ob sie vorhanden sind oder nicht.
Und aufgefallen ist mir, dass das Script ziemlich langsam läuft: ca 30 Sekunden braucht es um ca. 250 Namen aus der Abfrage mit den Namen aus Vergleichsliste (ca 1000 Einträge) abzugleichen.
Anzeige
AW: leider doch nicht
18.10.2011 02:37:53
Tino
Hallo,
kann eigentlich nicht sein!
In n ermittle ich die letzte gefüllte Zelle in Abfrage - Spalte D
und wenn n kleiner 3 ist wird der Code abgebrochen, Torschuetzen steht aber in Zeile 2.

With Sheets("Abfrage")
n = .Cells(.Rows.Count, 4).End(xlUp).Row
If n 
Habe auch mal Namen auf der Tabelle Vergleichsliste geändert,
diese Namen werden dann nicht gefärbt.
Lade besser mal ein Beispiel das Deinem Original entspricht.
Gruß Tino

222 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige