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

  • #1
B

Borranh

Neues Mitglied
Themenersteller
Dabei seit
24.05.2005
Beiträge
3
Reaktionspunkte
0
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)
 
  • #5
Wo soll ich die datei hinschicken ?

Gruß Matjes :)
 
Thema:

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

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben