Microsoft Excel

Herbers Excel/VBA-Archiv

Werte vergleichen und bei Änderung unterstreichen

Betrifft: Werte vergleichen und bei Änderung unterstreichen von: Tim
Geschrieben am: 18.07.2013 21:34:06

Hallo liebes Forum,

als VBA-Anfänger habe ich mir ein großes Projekt vorgenommen.
Ich mit euren zahlreichen Beiträgen weit gekommen.
Nun habe ich jedoch eine Frage, die ich mir leider nicht mit bestehenden Threads beantworten kann.

Ich habe eine Tabelle ("A:K") mit beliebig vielen Zeilen.
Die Spalten "H" und "J" sind leere Spalten und sollten auch leer bleiben.
In Spalte A befinden sich Leitungsbezeichnungen.
Diese sind in 100er-Schritten fortlaufend, beginnen bei 0100 und enden irgendwo im 4000er-Bereich nach. Prinzip folgend dargestellt:

0100
0100
0100
0200
0300
0300
0400
0500...

Zur besseren Übersicht soll ich jedes Mal, wenn sich die Leitungsbezeichnung ändert,
einen dicken Trennstrich zwischen den unterschiedlichen Werten und in der ganzen Zeile (A:K) einfügen.
Jedoch soll in den Spalten H und J kein Trennstrich sein, diese sollen leer bleiben.

Ich hoffe, dass ich mein Problem präzise genug geschildert habe.

Mein Versuch baut auf einem ähnlichen Forenbeitrag auf, scheitert aber meiner Meinung nach in der "Fragezeichenzeile" (siehe unten).
Wäre echt super, wenn mir jemand helfen mag.

Bis dahin: euch allen einen schönen Abend!!!
Tim

Sub Aenderung_Leitungsnummer()

  Dim Zeile1 As Long    'Erste Verhgleichszeile
  Dim Zeile As Long     'Zweite Vergleichszeile
  Dim ZeileL As Long    'Letzte Datenzeile
  
    Const Spalte = 1 'Spalte A, in der die Leitungsnummern bei Änderung durch dicke Linie  _
getrennt werden sollen
    With ActiveSheet
      ZeileL = .Cells(.Rows.Count, Spalte).End(xlUp).Row 'Letzte Datenzeile Spalte A
      Zeile1 = Zeile 'Startzeile für 1. Wert merken.
      Do Until Zeile > ZeileL
        Zeile = Zeile + 1
        If Zeile - Zeile1 > 1 Then 'mehrere identische Zeilen
            'do nothing
        Else
         .Cells(Zeile, Spalte).Value = .Cells(Zeile - 1, Spalte).Value Then
         ????????????????????????????????????????????????????????????????????
        End If
          'Startzeile für nächsten Wert merken
          Zeile1 = Zeile
        End If
      Loop
    End With
  
End Sub

  

Betrifft: AW: Werte vergleichen und bei Änderung unterstreichen von: Gerd L
Geschrieben am: 18.07.2013 22:39:11

Hallo Tim,

ohne Fehlerbehandlung.

Sub Luecken_Linie()

Dim Bereich As Range, letzterWert As String, i As Long, X As Long


Set Bereich = Range(Range("A2"), Range("A2").End(xlDown))

letzterWert = Range("A2").End(xlDown).Text


For i = 200 To CLng(letzterWert) Step 100

    X = Application.Match(Format(i, "0000"), Bereich, 0)
       
    With Union(Bereich.Cells(X, 1).Resize(1, 7), Bereich.Cells(X, 9), Bereich.Cells(X, 11)). _
Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlThick

    End With

Next


End Sub
Gruß Gerd


  

Betrifft: AW: Werte vergleichen und bei Änderung unterstreichen von: Tim
Geschrieben am: 19.07.2013 09:43:14

Guten Morgen Gerd,

danke für die schnelle Hilfe.
Beim Testen deines Sub' stößt VBA in der "For"-Zeile auf den Laufzeitfehler 13 - Typen unverträglich.

Durch mein schlaues VBA Handbuch habe ich die meinung, das da was mit der Variablendeklarierung schief gelaufen ist. Aber lösen konnte ich das Problem trotzdem nicht.

Darf ich nochmal deine Hilfe in Anspruch nehmen?


  

Betrifft: AW: Werte vergleichen und bei Änderung unterstreichen von: Gerd L
Geschrieben am: 19.07.2013 19:35:41

Hallo Tim,

lade bitte deine Datei hoch, mit der Tabelle( weitere Daten außer Spalte A kannst du anonymisieren) u.
dem Code.

Gruß Gerd


  

Betrifft: AW: Werte vergleichen und bei Änderung unterstreichen von: Tim
Geschrieben am: 21.07.2013 12:41:52

Hallo,

hier ist die teilanonymisierte Tabelle, so, wie sie mal aussehen soll:


Ich habe mich geirrt, die Leitungsnummern wechseln nicht in 100er Schritten sondern in 10er Schritten.
Und bei jedem Wechsel sollte eine dicke Trennlinie durch die ganze Tabelle gehen.

Ich bin mir nicht sicher, welchen Code du meinst? Den, der gesamten Tabelle? Der bringt dir leider nichts, weil darin die Importierten Daten fehlen. So hättest du nur eine leere Tabelle. Und die Daten kann ich dir nicht schicken, weil ich denke, dass das Auftragsunternehmen an der Geheimhaltung interessiert ist.

Zudem ist er 18 Seiten lang und mit Sicherheit entgegen aller Regeln der Kunst. Versteh mich bitte nicht falsch, ich schicke ihn gern, aber ich denke er würde für mehr Verwirrung als für Aufklärung sorgen.

Einen schönen Sonntag wünsche ich!


  

Betrifft: AW: Werte vergleichen und bei Änderung unterstreichen von: Gerd L
Geschrieben am: 21.07.2013 13:21:13

Hallo Tim,

eine Tabelle sagt mehr als 1000 Bilder.

Ändere mal versuchsweise:

Dim Bereich As Range, letzterWert As Long, i As Long, X As Long

Set Bereich = Range(Range("A3"), Range("A3").End(xlDown))

letzterWert = Range("A3").End(xlDown).Value


For i = 110 To letzterWert Step 10
'...................
Gruß Gerd


  

Betrifft: AW: Werte vergleichen und bei Änderung unterstreichen von: Tim
Geschrieben am: 21.07.2013 14:39:47

"Laufzeitfehler 13, Typen unverträglich" in Zeile:

letzterWert = Range("A3").End(xlDown).Value

Aus diesem Fehler werde ich nicht ganz schlau.
Ich habe gedacht, dass er auftritt, wenn man die Variablen falsch bestimmt hat.
Also habe ich versuchsweise "letzterWert" als Variant deklariert.
Dann war die Zeile okay, und trat in der nächsten Zeile wieder auf:

For i = 110 To letzterWert Step 10

Also habe ich auch i als Variant bestimmt.
Aber dadurch war der Fehler in dieser Zeile nicht zu beheben.


 

Beiträge aus den Excel-Beispielen zum Thema "Werte vergleichen und bei Änderung unterstreichen"