Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1196to1200
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

lfdNr darf nur einmal vergeben werden

lfdNr darf nur einmal vergeben werden
strodti
Hallo liebes Forum (und hier besonders die VBA-Spezialisten),
versuche mit VBA was zu basteln und komme aus dem Lachen nicht mehr raus.
Folgendes möchte ich gerne haben:
In einer Adressliste vergebe ich eine lfdNr. Diese soll nicht doppelt vorkommen was ich bisher mit Datenüberprüfung und „=Zählenwenn($B:$B;B1)=1“ abfange. Nun besteht aber die Möglichkeit, dass ein DS wieder gelöscht wird, damit dann auch die entsprechende lfdNr., welche ich dann wieder neu vergeben könnte (da ja nicht mehr „doppelt“). Dies möchte ich aber ausschließen, d.h. eine einmal vergebene lfdNr soll nicht ein weiteres Mal vergeben werden können.
Hierzu habe ich mir gedacht, über die lfdNr das Maximum zu ermitteln, und jeder neue DS muss eine lfdNr > Max(lfdNr) haben. Da die Funktion Max() sich natürlich anpasst, müsste das Max() als Wert zur Verfügung stehen. Bsp: Wenn ich die DS 20-25 lösche (lfdNr. 20-25), soll der nächste neue DS die lfdNr. 26 erhalten! Bei der Funktion Max() wäre das Max bei 19, aber 25 soll es sein (welche dann noch irgendwie gespeichert werden muss).
Warum lache ich nun? Tja, ich habe versucht mir das, zumindest das Kopieren des Wertes, in VBA selbst zu basteln, aber mit nachfolgendem Ansatz wird in jeder aktiven Zelle immer eine 0 gesetzt, mein Max() bleibt immer 0 und ... naja seht selbst. Hier der Code (Ihr dürft auch lachen):
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Range("D1").Select
ActiveCell.FormulaR1C1 = "=MAX(R[1]C:R[1048575]C)"
Range("D1").Copy
Range("E1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
'Range("C2").Select
End Sub

Leider sind meine Kenntnisse noch nicht so weit, um a) meinen Code so zu verstehen, wie dieser gerade funktioniert, und b) um meinen Wunsch zu erstellen.
Folgende Randbedingung: Die Spalte B enthält im Original die lfdNr, Einträge ab Zeile 3; den Max-Wert hätte ich gern in Zelle B1.
Könnte mir jemand helfen? Vielleicht hat ja jemand eine andere, elegantere Lösung.
Gruß
Tobias

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: lfdNr darf nur einmal vergeben werden
28.01.2011 10:32:29
Reinhard
Hallo Tobias,
du selbst willst die Nr eingeben oder soll Vba das für dich machen, sagen wir mal in Bx.
Dann mußt du sagen bei welcher Gelegenheit, wenn zb. Cx ein Wert eingegeben wurde o.ä.
Das jeweilige Max mußt du mit einer festen Zelle irgendwo vergleichen.
If Max Bx=Max+1
else
Bx=Zelle+1
end if
Zelle=zelle+1
Ups, sehe grad, hab da wahrscheinlich einen Logikfehler drin, naja, der uß halt noch raus :-)
Anstelle eine Zelle kannst den Wert auch innerhalb der Mappe fest speichern,
so legst du die Dauer"Variable" an:

With ActiveWorkbook.CustomDocumentProperties
.Add name := "Complete", linkToContent := False, _
type := msoPropertyTypeBoolean, value := False
End With

Gruß
Reinhard
Anzeige
AW: lfdNr darf nur einmal vergeben werden
28.01.2011 11:04:18
strodti
Hallo Reinhard,
erstmal vielen Dank dass Du Dich meiner annimmst.
Ich denke, wenn VBA die Nr vergibt, ist es einfacher, sprich wenn in Ax ein Eintrag, dann in Bx lfdNr und Cx für die weitere Eingabe selektiert.
Den Vergleich mit einer festen Zelle hatte ich mir auch so gedacht - nur die Umsetzung..... (versuche noch)
Den Code für die DauerVariable verstehe ich nicht mal ansatzweise - was geschieht da?
Wäre nett, wenn Du am "V BAll" bleibst.
Gruß
Tobias
AW: lfdNr darf nur einmal vergeben werden
28.01.2011 23:24:39
Josef

Hallo Tobias,
eine Möglichkeit, einfach mal einen Namen in Spalte B eingeben.
https://www.herber.de/bbs/user/73298.xls

Gruß Sepp

Anzeige
AW: lfdNr darf nur einmal vergeben werden
31.01.2011 07:51:03
strodti
Moin Sepp,
konnte am WE leider nicht an den Rechner, daher erst jetzt meine Reaktion.
Dein Code ist ja super. Habe zwar bisher noch nicht erkannt, wie der Code sich die Nummerierung "merkt", aber das bekomme ich noch raus!!!!
Vielen lieben Dank für die Unterstützung (wiedermal ;-)!!)
Einen guten Start in die neue Woche.
Tobias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige