Suchfunktion / VBA

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Suchfunktion / VBA
von: Jacob
Geschrieben am: 09.12.2003 12:41:16

Hallo,

ich möchte folgendes tun:

in einer Tabelle in der Spalte A habe ich 100 Zeilen, die durchnummeriert sind ( 1 - 100 ). Nach dem Löschen des Inhaltes zB. von Zeile 5 soll eine Routine die fehlende Nummer finden und in die Zeile schreiben. Die Spalte ist nicht sortiert. Falls es aber keine "freie Nummer" gibt soll die nächste Nummer eingfügt werden, in diesem Fall 101. Ich hoffe mir kann jemand von Euch helfen.

Viele Grüße

Jacob

Bild


Betrifft: Nachfragen
von: Martin Beck
Geschrieben am: 09.12.2003 14:10:58

Hallo Jacob,

1. Beim löschen wird die Zeilennumer mit gelöscht, richtig?

2. Sind es immer genau 100 Zeilen?

3. Wieso läßt Du die Nummer beim Löschvorgang nicht einfach stehen, es kann doch gar keine andere Lücke geben?

4. Wieso (und wann) soll die 101 zum Zuge kommen?

Gib mal eine bißchen mehr Input, das Problem läßt sich wahrscheinlich leicht lösen, wenn es detaillierter beschrieben wird.

Gruß
Martin Beck


Bild


Betrifft: AW: Nachfragen
von: Jacob
Geschrieben am: 09.12.2003 14:22:52

Super, dann wollen wir mal schauen
1. Die Zeilenummer wird nicht gelöscht, lediglich der Inhalt
2. Die Zeielenanzahl kann verschieden sein, 100 war nur ein Beispiel
3. Die Nummer muß gelöscht werden, da die Vorgaben es erfordern.
4. Die 101 (in diesem Fall) oder eine neue Nummer soll dann in die Zelle geschrieben werde, wenn keine andere Nummer frei ist. Es soll zuerst geprüft werden wieviele Nummer in der A Spalte vorhanden sind, ob die keine Lücken aufweisen, wenn Ja dann soll die Lücke mit der entsprechener Nummer gefüllt werden ansonsten eine neue Nummer (n+1) ans Ende hinzugefügt werden.

Ich hoffe Sie werden den Sinn verstehen und mir helfen können.

Viele Grüße

Jacob


Bild


Betrifft: Bitte Datei uploaden
von: Martin Beck
Geschrieben am: 09.12.2003 14:35:32

Hallo Jacob,

das ist so zu umständlich. Kannst Du mal die Datei hier auf den Server uploaden?

Gruß
Martin Beck


Bild


Betrifft: AW: Bitte Datei uploaden
von: Jacob
Geschrieben am: 09.12.2003 14:47:06

Hallo Martin,

vielleicht stellt du dir das zu kompliziert vor. Nimm einfach eine leere Tabelle und die Spalte A soll von 1-10 nummeriert werden. Dann einfache Schaltfläche hinzufügen die folgendes tut:
- Die Spalte A wird durchsucht welche Einträge vorhanden sind (in diesem Fall 1-10).
- Wenn du angenommen die 2 rauslöscht soll die Routine es feststellen können und die fehlende 2 in die leere Zeile einfügen.
- Wenn Spalte A durchgehend von 1-10 nummeriert ist dann soll eine 11 hinten dran hizugefügt werden.

Die orginal Datei steht noch nicht fest, aber die Tabelle habe ich hinzugefügt unter https://www.herber.de/bbs/user/2392.xls


Bild


Betrifft: Sorry, ich kapier's nicht
von: Martin Beck
Geschrieben am: 09.12.2003 14:56:11

Hallo Jacob,

ich kapier's nicht.

1. Nach Deinen Anweisungen wird doch immer wieder der Ausgansgzustand hergestellt. Ich lösche z.B. den Inhalt der Zeile, die in Zelle A2 die 2 stehen hat. Anschließend setze ich dort wieder die 2 ein. Wozu soll das gut sein? Ich kann doch die 2 gleich stehen lassen.

2. Wenn ich eine Zeile lösche, muß es in den Einträgen in Spalte A doch immer eine Lücke geben (nämlich die, die ich durch das Löschen hervorgerufen habe). Daher kann die letzte von Dir beschriebene Variante doch nie eintreten.

Wenn Du das Problem nicht noch etwas nachvollziehbarer beschreibst oder eine "reale" Tabelle uploadest, kann ich Dir leider nicht weiterhelfen.

Gruß
Martin Beck


Bild


Betrifft: AW: Sorry, ich kapier's nicht
von: Jacob
Geschrieben am: 09.12.2003 15:09:47

Hallo Martin

ich weiss das es etwas undurchschaubar ist aber die Vorgabe (nicht die von mir) ist nun mal wie sie ist. Ich versuche es dir ein wenig zu erklären. Auf diese Tabelle sollen ca. 20 Anwender zugreifen können. Alle haben die Möglichkeit in der Tabelle Änderungen durchzuführen. Die Tabelle beinhaltet selbstvertändlich nicht nur die Spalte A sondern auch adnere Spalten für die weiteren Vorgangsdaten. Wenn ein Vorgang, welches in der Tabelle schon angelegt wurde, abgeschlossen ist, wird die Vorgangsnummer einfach freigegeben (durch Löschen des Inhalts der entsprechenden Zeile inkl. der Nummer). Sobald ein von den 20 Anwender einen neuen Vorgang anlegen muss soll er die Möglichkeit bekommen zu schauen, ob eine Nummer in der Zwischenzeit frei geworden ist oder er muss eine neue anlegen. Meine Aufgabe ist es diesen Vorgang zu automatisieren. Ich hoffe du kannst es jetzt ein wenig besser verstehen.

Gruß

Jacob


Bild


Betrifft: Lösungsvorschlag
von: Martin Beck
Geschrieben am: 09.12.2003 16:26:27

Hallo Jacob,

jetzt lichten sich die Nebel. ;-)

Nachstehend mal ein Codebeispiel. Annahme: Die Einträge beginnen in Zeile 1. Ergebnis: Eine Meldung, die die kleinste "freie" Vorgangsnummer angibt. Hoffentlich kannst Du damit etwas anfangen.

Gruß
Martin Beck


Sub neuer_Vorgang()
Dim arr1()
z = Range("A65536").End(xlUp).Row
ReDim arr1(z)
For i = 1 To z
    arr1(i) = Cells(i, 1)
Next i
'Bubblesort
For j = 2 To z
    If arr1(j - 1) > arr1(j) Then
        zwi = arr1(j - 1)
        arr1(j - 1) = arr1(j)
        arr1(j) = zwi
    End If
Next j
If arr1(1) > 1 Then
        MsgBox "Neue Vorgangsnummer ist: 1"
        Exit Sub
End If
For k = 1 To z - 1
    If arr1(k + 1) > arr1(k) + 1 Then
        MsgBox "Neue Vorgangsnummer ist: " & arr1(k) + 1
        Exit Sub
    End If
Next k
    
MsgBox "Neue Vorgangsnummer ist: " & arr1(z) + 1
End Sub



Bild


Betrifft: Einmischung
von: FCH
Geschrieben am: 09.12.2003 15:23:39

Hi,

Also, ja mehr du Martin erklärst, um so verwirrter werde ich :-)

Wenn deine Mappe so aufgebaut ist, wie deine hochgeladene, dann ist Spalte A doch sortiert. Und bei deinem Ansinnen – so wie ich das verstehe – bleibt dies auch so, da du ja immer die kleinste freie Nummer suchst.

Oder stehe ich völlig auf dem Schlauch?

Gruß
FCH


Bild


Betrifft: AW: Einmischung
von: JAcob
Geschrieben am: 09.12.2003 15:30:29

Hallo,

sorry mein Fehler die Spalte A mit den Nummern soll unsortiert sein und ich suche immer noch nach einer Lösung.

Danke Jacob


Bild


Betrifft: AW: Einmischung
von: FCH
Geschrieben am: 09.12.2003 15:49:14

Hi,

mal ein Versuch:


Sub fuellen()
Dim lgCou As Long
Dim lgRow As Long
Dim lgZ As Long
lgCou = WorksheetFunction.Count([A:A])
lgRow = [A65536].End(xlUp).Row
If lgCou = lgRow Then
Cells(lgRow + 1, 1) = lgRow + 1
Else
lgZ = 1
Do While WorksheetFunction.CountIf([A:A], lgZ) = 1
lgZ = lgZ + 1
Loop
If [A1] < 1 Then
[A1] = lgZ
ElseIf [A2] < 1 Then
[A2] = lgZ
Else
Cells([A1].End(xlDown).Row + 1, 1) = lgZ
End If
End If
End Sub


Gruß
FCH


Bild


Betrifft: AW: Einmischung
von: Jacob
Geschrieben am: 09.12.2003 15:55:31

Danke schön, ich werde es glech testen aber es kann sein dass ich dir erst morgen antworte, da ich gleich ein meeting habe. Nicht böse sein und ich freue mich schon
Super und vielen Dank

Jacob


Bild


Betrifft: AW: Einmischung
von: Jacob
Geschrieben am: 09.12.2003 16:06:20

Ich möchte mich bei dir bedanken es funktioniert genauso wie ich es mir vorgestellt habe. Super, jetzt muss ich nur mir das genau anschauen für die Zukunft.

Viele Grüße

Jacob


Bild

Beiträge aus den Excel-Beispielen zum Thema " Outlook Öffnen"