Excel Makro: "sich selber löschen, wenn doppelt"

Dieses Thema Excel Makro: "sich selber löschen, wenn doppelt" im Forum "Microsoft Office Suite" wurde erstellt von Borranh, 24. Mai 2005.

Thema: Excel Makro: "sich selber löschen, wenn doppelt" Hallo Die Überschrift trifft es leider nur halb, aber mehr fiel mir nich ein 8) Folgendes Makro, welches per...

  1. Hallo

    Die Überschrift trifft es leider nur halb, aber mehr fiel mir nich ein 8)
    Folgendes Makro, welches per Linieneingabe ein Formblatt ausfüllt, funktioniert FAST perfekt. Aber leider nur fast. Der vorletzte Schritt Überspringe Dich bei der Auflistung der Umstiege selber funktioniert nur bei Linien, die NICHT aus einer Zahl bestehen (n123, U1 etc.). Leider haben wir auch Linien, die NUR aus einer Zahl bestehen. Wenn ich nun statt If linum = linie Then GoTo weiter ein If linum *1 = linie*1 Then GoTo weiter eingebe funktioniert es genau andersrum. Wie bekomme ich es hin, dass excel beide Fälle schafft?

    Da ich ja beeindruckt bin von dem Fachwissen, was hier einige an den Tag legen hoffe ich, dass auch mein Problem gelöst werden kann.

    Mit vielen Grüßen

    L.


    Sub füllen()
    m = 9
    l = 5
    umstieg1 =
    umstieg3 =
    umstieg2 =
    umstieg =

    Sheets(mst).Select

    'leermachen vor Neubeginn

    Range(M9:M150).Select
    ActiveWindow.ScrollRow = 1
    Range(M9:M150,P9:p150).Select
    Range(P9).Activate
    Selection.ClearContents

    linie = Cells(2, 2)
    'Schreibe den Titel in die Zelle F2, die Haltestellen in die Spalte M, und die dazugehörenden Umstiege in die Spalte P, wenn 14 Haltestellen eingefügt sind mache eine neue Zeile (ebenso bei 28)
    For x = 1 To 30000
    If Sheets(Probeneu).Cells(x, 1) = linie Then
    n = x
    Cells(2, 6) = Sheets(Probeneu).Cells(x, 2)
    n = n + 1
    Do Until Sheets(Probeneu).Cells(n, 1) <> linie
    Cells(m, 13) = Sheets(Probeneu).Cells(n, 2)
    If Cells(m, 13) = dummy Then Cells(m, 13) =
    Do Until Sheets(Probeneu).Cells(n, l) = Empty
    If l = 19 Then
    Cells(m, 16) = Trim(umstieg1)
    umstieg1 =
    m = m + 1
    End If
    If l = 33 Then
    Cells(m, 16) = Trim(umstieg1)
    umstieg1 =
    m = m + 1
    End If
    If l = 47 Then
    Cells(m, 16) = Trim(umstieg1)
    umstieg1 =
    m = m + 1
    End If
    ' Wenn Du Dich selber findest überspringe Dich bei den Umstiegen
    linum = Trim(Sheets(Probeneu).Cells(n, l))
    If linum = linie Then GoTo weiter

    umstieg = Sheets(Probeneu).Cells(n, l)
    umstieg1 = umstieg1 & & umstieg
    weiter:
    l = l + 1
    Loop
    Cells(m, 16) = Trim(umstieg1)
    n = n + 1
    m = m + 1
    l = 5
    umstieg1 =
    Loop
    GoTo finis
    End If
    Next x
    finis:

    Beep
    Beep
    Beep
    End Sub
     
  2. Hallo Borranh,

    so ohne Daten drumherum und ohne Testmöglichkeit ist das nicht ganz einfach  :-\

    Wenn ich mir das Makro so betrachte, werden keine Datentypen wie String, Long usw. für die Variablen festgelegt (siehe in der Excel-Vba-Hilfe unter Dim). So sind alle Variablen vom Typ Variant. Der Typ Variant beinhaltet mehrere Datentypen gleichzeitig. Excel benutzt den seiner Meinung nach bestgeeigneten, was aber manchmal schief geht. Das führt dann zu solchen fast nicht zu greifenden Fehlern  ;D

    Mein Tipp an dich:
    deklariere deine Variablen mit festen Datentypen. Ist zwar mehr Schreibarbeit, aber führt zu definierten Ergebnissen.

    Wenn Du in deinem Modul als erste Zeile
    Code:
    Option Explicit
    schreibst, zwingt dich Excel alle Variablen zu deklarieren.

    Gruß Matjes :)
     
  3. Hi

    Danke für den Tip. Ich werde Deinen Rat mit dem Festlegen der Variablen mal testen... Schicken zum Testen kann/darf ich die Datei nicht, auch nicht von der Firma aus hier im Forum antworten...

    Ich habe von Makros keine Ahnung. Das Makro hat ein Kollege geschrieben und ich passe es nur an. Aber - ich nutze die Zeit natürlich und lerne und lerne und lerne - mein erstes eigenes kleines Makro läuft ;o)

    LG

    Bor
     
  4. Hallo

    Dank Deines Tipps bin ich einen riesigen Schritt weitergekommen.
    Aber - es taucht nun folgendes Problem auf. Die Linien, die als Umstieg in das Tabellenblatt mst eingetragen werden sollen aufsteigend sortiert werden; in mehreren Schritten:
    1. U-Linien
    2. S-Linien
    3. R-Linien
    4. Linien der Nummer 1-25
    5. Linien der Nummer 31-39
    6. restliche Linien ausser dreistelligen 600er-Linien
    7. 600er Linien

    Wie mache ich das mit dem Sortieren innerhalb einer Zelle nacheinander nach verschiedenen Kriterien?

    Aus Datenschutzgründen habe ich die Tabelle deutlich verfremdet, aber zu Testzwecken reicht sie völlig aus ;o) Viel Spass bei Basteln. ach ja - die ganzen Kommentare sind noch unsortiert, und spiegeln ein wenig das Chaos beim Erstellen des Makros wider...

    LG
    Bor

    (ich hoffe, der Link funzt)
    http://www.spannweiten.de/Version2.xls
     
  5. Wo soll ich die datei hinschicken ?

    Gruß Matjes :)
     
Die Seite wird geladen...

Excel Makro: "sich selber löschen, wenn doppelt" - Ähnliche Themen

Forum Datum
Excel VBA Makro zum suchen eines Textes und anschließend einen Breich zu kopieren Microsoft Office Suite 22. Jan. 2015
Excel VBA Makro zum suchen und markieren von Zeilen die ein bestimmtes Wort enthalten Microsoft Office Suite 16. Juni 2014
Excel: Makro ASCII verschieben Windows XP Forum 8. Nov. 2013
Makros und anderes - Excel Microsoft Office Suite 15. März 2013
Excel Sprungmarke mitten in ein anderes Makro Windows XP Forum 15. März 2012