Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
996to1000
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

Fehlende Nummern ermitteln

Fehlende Nummern ermitteln
04.08.2008 13:46:23
sascha76er
Hallo,
hab folgendes Problem mit folgendem Code:

Sub Nummauffuellen()
' hier wird eine Liste von nicht mehr als
' 9999 Zeilen angenommen. Man kann natürlich auch
' anders vorgehen, indem man ohne feste Listengrösse
' auskommt, dann weiss man aber nicht, wie gross die
' Variable "W" dimensioniert werden muss. Entweder vergrössert
' man sie dann durch "Redim", oder setzt sie gleich zu
' Anfang auf eine bestimmte Grösse. Dann kann man aber
' auch gleich dieses Makro hier ungeändert verwenden.
' Eine weitere Möglichkeit besteht darin, die errechneten
' freien Zahlen direkt in die entsprechenden Zellen zu
' schreiben. In diesem Falle müsste eine "Zeilenvariable"
' hochgezählt werden, was sicherlich zugunsten des
' Arbeitsspeichers wäre. Aber davon haben wir ja alle
' genug. :-)
Dim i As Integer
Dim Ende As Integer
Dim W(1 To 9999) As Integer
Dim Y As Integer
Dim x As Integer
Range("A2").Select
Ende = Application.WorksheetFunction.Max(ActiveCell.EntireColumn)
Zähler = 0
Y = 0
For i = 2 To Ende
If Cells(i, 1).Value = "" Then
Exit For
End If
Y = Cells(i - 1, 1).Value + 1
If Cells(i, 1).Value  Y Then
Do
Zähler = Zähler + 1
W(Zähler) = Y
Y = Y + 1
Loop Until Y = Cells(i, 1).Value
End If
Next i
' Jetzt werden die freien Nummern in Spalte "B" geschrieben:
Range("B2").Select
For x = 1 To Zähler
Cells(x + 1, 2).Value = W(x)
Next
End 

Sub
Hier meine Beispieldatei:
https://www.herber.de/bbs/user/54321.xls
Bei der Ausführung kommt es immer zu einem Laufzeitfehler 6, Überlauf!
Kann leider den Grund hierfür nicht finden, wäre toll wenn sich das jemand mal hier angucken kö _
nnte.
Gruß
Sascha

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehlende Nummern ermitteln
04.08.2008 13:52:57
Andi
Hi,
ohne das jetzt getestet zu haben, schätze ich mal, dass eine Deiner Variablen den zulässigen Bereich für Integer-Variablen überschreitet. Deklariere sie mal als Long.
Abgesehen davon würde ich Umlaute in Variablennamen lieber vermeiden.
Schönen Gruß,
Andi

AW: Fehlende Nummern ermitteln
04.08.2008 13:53:00
ransi
HAllo Sascha
Deklarier deine Variablen mal als Long.
ransi

AW: Fehlende Nummern ermitteln
04.08.2008 14:03:16
sascha76er
Hallo Ransi,
funktioniert irgendwie bei mir nicht, kannst Du eventuell mal in Datei reingucken?
Gruß
Sascha

AW: Fehlende Nummern ermitteln
04.08.2008 14:12:00
ransi
HAllo
Hab reingeguckt und bin nicht raus schlau geworden.
Was willst du ermitteln?
Ich denke mal die Fehlenden Zahlen.
Wenn dem so ist, versuch mal dies:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Sub Nummauffuellen()
Dim bereich As Range
Dim Mn As Long
Dim Mx As Long
Dim L As Long
Dim I As Long
Set bereich = Range("A2", Range("A65536").End(xlUp))
MsgBox bereich.Address
Mx = Application.Max(bereich)
Mn = Application.Min(bereich)
For L = Mn To Mx
    If WorksheetFunction.CountIf(bereich, L) = 0 Then
        I = I + 1
        Cells(I, 2) = L
    End If
Next
End Sub

Wenn nicht, beschreib nochmal was gewollt ist.
ransi

Anzeige
AW: Fehlende Nummern ermitteln
04.08.2008 14:12:51
Heiko
Hallo Sascha,
da mir dein Code zu umständlich war, probiere mal dies hier:

Sub Neuu()
Dim lngMin As Long, lngMax As Long, lngI As Long, lngN As Long
Dim rngNr As Range
With ActiveWorkbook.ActiveSheet
lngMax = Application.WorksheetFunction.Max(.Range("A:A"))
lngMin = Application.WorksheetFunction.Min(.Range("A:A"))
lngN = 2
For lngI = lngMin To lngMax
Set rngNr = .Range("A:A").Find(What:=lngI)
If rngNr Is Nothing Then
.Cells(lngN, 2) = lngI
lngN = lngN + 1
End If
Set rngNr = Nothing
Next lngI
End With
End Sub


Gruß Heiko
PS: Rückmeldung wäre nett !

Anzeige
AW: Fehlende Nummern ermitteln
04.08.2008 14:21:00
sascha76er
Hallo,
hat super funktioniert.
Vielen Dank
Sascha

AW: Fehlende Nummern ermitteln
04.08.2008 21:55:00
Holger
Hallo Heiko,
dein Code ist Spitze. Klappt aber nur, wenn die Werte im gleichen sheet sind. Wie muss man den Code verändern, wenn man aus einem anderen sheet die fehlenden Werte anzeigen will?
Hab auch schon ein paar Sachen probiert, hab aber deinen Code zerbastelt.
Danke Holger

AW: Fehlende Nummern ermitteln
05.08.2008 10:45:20
Heiko
Hallo Holger,
z.B. so:

Sub Neuu()
Dim lngMin As Long, lngMax As Long, lngI As Long, lngN As Long
Dim rngNr As Range
Dim wksSource As Worksheet, wksTarget As Worksheet
' Hier kannst du nun Quelle und Ziel beliebig anpassen.
Set wksSource = Workbooks("40100.xls").Worksheets("Tabelle1")
Set wksTarget = Workbooks("40100.xls").Worksheets("Tabelle2")
With wksSource
lngMax = Application.WorksheetFunction.Max(.Range("A:A"))
lngMin = Application.WorksheetFunction.Min(.Range("A:A"))
lngN = 2
For lngI = lngMin To lngMax
Set rngNr = .Range("A:A").Find(What:=lngI)
If rngNr Is Nothing Then
wksTarget.Cells(lngN, 2) = lngI
lngN = lngN + 1
End If
Set rngNr = Nothing
Next lngI
End With
End Sub


Gruß Heiko
PS: Rückmeldung wäre nett !

Anzeige
Frage ist nun beantwortet
05.08.2008 11:09:00
sascha76er
Hallo Heiko,
vielen Dank funktioniert auch super.
Gruß
Sascha

=wiederholen("Danke";1000)
05.08.2008 17:02:00
Holger
Hallo Heiko,
klappt prima, vielen Dank.
Gruß Holger

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige