Der richtige VBA Code

Hallo

Ich habe ein kleines Problem ( Excel XP ) vielleicht kann und möchte mir einer von euch helfen.

Ich habe leider nicht viel Ahnung in VBA brauche aber einen der mir sagt wie ich mein VBA Problem lösen kann.

In den Zellen E2-F117 besteht eine dropliste die Namen stehen in den Zellen AW2-AW117.

Sollte man versuchen einen Namen einzutragen der nicht in der Liste (AW2-AW117) steht sollte eine Meldung erscheinen „ Dieser Name ist nicht vorhanden“ Diese Meldung sollte man dann mit OK wegklicken können ( So wie bei der Gültigkeitsabfrage )

des Weiteren sollte die Meldung „ nicht freigegeben“ erscheinen wenn der Name Musterman1 und Musterman2 aus der dropliste (E2-F117) ausgewählt wird. Auch hier sollte man die Info mit OK wegklicken können.

Wenn man in die Zellen G1-H117 die Zahlen 1999 sowie 2099 und 2100 eingibt sollte die Meldung „ Achtung nicht vorhanden“ erscheinen .Auch diese sollte man dann mit OK wegklicken können.( Das habe ich zur Zeit noch unter der Gültigkeitsabfrage laufen )

Wie gesagt ich weiß was VBA ist habe auch bereits erste Erfahrungen gemacht weiß aber leider nicht wie man solch einen Code schreibt.

Vielen dank für euere Hilfe

Susanne

Hallo Susanne,

Ich habe ein kleines Problem ( Excel XP ) vielleicht kann und
möchte mir einer von euch helfen.

*meld*

In den Zellen E2-F117 besteht eine dropliste die Namen stehen
in den Zellen AW2-AW117.

Am 7.1 haste das doch schon mal hier angefragt, gehe bitte zur alten Anfrage und lösche diese. Als Normaluser selbst löschen geht, solange noch keine® geantwortet hat.

Angelehnt an deine Antwort in der Beitragsfolge mit Rezeptzutaten bitte ich dich um das Hochladen einer aussagekräftigen Beispielmappe.
Nimm z.B. den Hochlader file-upload, s. FAQ:2606 und zeige uns den erhaltenen Downloadlink.

Sollte man versuchen einen Namen einzutragen der nicht in der
Liste (AW2-AW117) steht sollte eine Meldung erscheinen „
Dieser Name ist nicht vorhanden“ Diese Meldung sollte man dann
mit OK wegklicken können ( So wie bei der Gültigkeitsabfrage )

Okay.

des Weiteren sollte die Meldung „ nicht freigegeben“
erscheinen wenn der Name Musterman1 und Musterman2 aus der
dropliste (E2-F117) ausgewählt wird. Auch hier sollte man die
Info mit OK wegklicken können.

Okay.
(Okay = kapiert, sagt nix aus ob ichs hinkriege :smile:, bin aber sehr zuversichtlich.)

Wenn man in die Zellen G1-H117 die Zahlen 1999 sowie 2099 und
2100 eingibt sollte die Meldung „ Achtung nicht vorhanden“
erscheinen .Auch diese sollte man dann mit OK wegklicken
können.( Das habe ich zur Zeit noch unter der
Gültigkeitsabfrage laufen )

Ups.
Anfangs ging es doch um Daten—Gültigkeit—Liste in Zellen im Bereich E2-F117.
Die Liste steht wohl in AW2-AW117.
Was hat es nun mit G1-H117 so auf sich? Ich hoffe dies wird klarer wenn die Beispielmappe vorliegt.

Gruß
Reinhard

Hallo Reinhard

Ich habe versucht die Frage zu löschen leider geht es nicht warum auch immer.

Hier liegt das Muster
https://www.dropbox.com/s/mf89kh6rl7mrx5m/Muster.1%2…

ich hoffe der link geht so i.o

LG
Susanne

Hier liegt das Muster
https://www.dropbox.com/s/mf89kh6rl7mrx5m/Muster.1%2…
ich hoffe der link geht so i.o

Hallo Susanne,

ja, der Link funktionierte. Mit der Mappe habe ich aber Probleme.
Abgesehen von Zeile 1 stehen nur in A und J Daten. Bei A und B hast du den Autofilter gesetzt. Ist der Autofilter das was du als Dropliste meintest?

Warum ist dein Vba-Projekt mit einem Passwort geschützt? Steht doch kein Code drin.

Gruß
Reinhard

Hallo Reihard

„Abgesehen von Zeile 1 stehen nur in A und J Daten.“

Die Daten von A2-117 sowieB2-117 werden über den Autofilter ( Dropliste ) von J2-89 genommen.

„Ist der Autofilter das was du als Dropliste meintest?“

Ja so ist es.

Warum ist dein Vba-Projekt mit einem Passwort geschützt?

Das hatte ich schon mal sicherheitshalber angelegt und vergessen es raus zu machen.

Wenn es dir Helfen würde könne die dir eine neue Datei hochladen .

LG
Susanne

Hallo Reihard

Hallo Susae *gg*,

„Abgesehen von Zeile 1 stehen nur in A und J Daten.“

Die Daten von A2-117 sowieB2-117 werden über den Autofilter (
Dropliste ) von J2-89 genommen.

ein Autofilter nimmt nix von anderen Spalten *denk*

„Ist der Autofilter das was du als Dropliste meintest?“

Ja so ist es.

*grübel*

Wenn es dir Helfen würde könne die dir eine neue Datei
hochladen .

Ja bitte, aber nicht wegen dem Passwort, das flog schon raus, machs aber für andere Helferlein raus, ich habe schlichtweg das Problem, mir ist nicht klar was ich machen soll.

Schreibe bitte in A und B noch paar Fahrernamen rein und erklär mir bitte nochmal wie das was geschehen soll wenn du die Mappe benutzt.

Gruß
Reinhard

Hallo Reinhard

Hier der Link für das neue Muster.
https://www.dropbox.com/s/0mdvnxlp1n41pxd/Test.1.xls

Beschreibung ist in der Tabelle erhalten.

LG
Susanne

https://www.dropbox.com/s/0mdvnxlp1n41pxd/Test.1.xls
Beschreibung ist in der Tabelle erhalten.

Hallo Susanne,

wie ich sehe hast du meine Mail wegen einer anderen Sache erhalten :smile:

Diese Beispielmappe gefällt mir schon viel besser.
Mein Lösungsansatz dazu ist hier in dieser Mappe:
http://www.file-upload.net/download-8502489/kwTest.1…

Bei z.B. Fahrern willst du ja zwei verschiedene Fehlermeldungen bei Fehleingabe, je nachdem of der fahrername nicht in der Liste steht oder der Fahrer keine Freigabe hat.
Mit zwei verschiedenen Fehlermeldungen bei Gültigkeitliste sehe ich bislang keine Möglichkeit dies ohne Vba hinzukriegen,

Darum erledige ich das mit nicht in der Liste stehen mit Gültigkeitsliste bei den Fahrern. Bei den „zugelassenen“ Autos könnte man bei Bedarf analog dazu noch einbauen.

Für „keine Freigabe“ benutze ich für Fahrer und Autos Vba. Code steht hier im Anschluß untendrunter.
Der Code funktioniert auch wenn du z.B. durch Reinkopieren mehrere Zellen gleichzeitig veränderst. Probiers aus, markiere E2:E117, Str+c, strg+v,…

Die Liste(n) für Gültigkeit—Liste und nicht freigegebene Fahrer/Autos stehen auf dem Blatt „Hilf“. Spalte AW kannste also löschen.

Gruß
Reinhard

Option Explicit

Private Sub Worksheet\_Change(ByVal Target As Range)
Dim Zelle As Range, wksH As Worksheet
On Error GoTo hell
Set wksH = Worksheets("Hilf")
Set Target = Intersect(Target, Range("E2:F117,G2:H117"))
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Zelle In Target
 Select Case Zelle.Column
 Case 5, 6
 If Application.CountIf(wksH.Range("FahrGesp"), Zelle.Value) \> 0 Then
 MsgBox "Fahrer " & Zelle.Value & " hat keine Freigabe."
 Zelle.Value = ""
 End If
 Case 7, 8
 If Application.CountIf(wksH.Range("AutoGesp"), Zelle.Value) \> 0 Then
 MsgBox "Auto " & Zelle.Value & " hat keine Freigabe."
 Zelle.Value = ""
 End If
 Case Else
 'nix tun
 End Select
Next Zelle
hell:
Application.EnableEvents = True
End Sub

Hallo Reinhard

Genau so habe ich es mir vorgestellt.

Es sind jetzt nur noch ein paar kleinigkeiten die ich gerne ändern möchte.

Wenn man die Fahrzeuge 490 / 4400 / 4500 bekomme ich zwar die meldung aber wenn ich auf ok drücke werden die fahrzeuge wieder rausgenommen diese sollen aber drin bleiben das soll nur eine Info sein und das man es als gelesen hat mit ok bestädigt.
Das gleiche ist mit den Fahrer Namen soll stehn bleiben aber als meldung gelesen muß mit OK bestädigt werden.

Wenn man OK bestädigt bleiben Namen und Fahrzeug stehn wenn man auf abrechen geht wird Name und Fahrzeug rausgenommen.

Geht das ?

LG
Susanne

Wenn man OK bestädigt bleiben Namen und Fahrzeug stehn wenn
man auf abrechen geht wird Name und Fahrzeug rausgenommen.
Geht das ?

ja.

Hallo Susanne,

Ich habe jetzt die Ja/Nein-Auswahlvariante genommen. wobei der Nein-Button vorgewählt ist. (D.h. bei „Enter“ wird „Nein“ ausgeführt). In der Vba-Hilfe wird "MsgBox gut erklärt,
Nachfolgend der neue Code

Gruß
Reinhard

Option Explicit

Private Sub Worksheet\_Change(ByVal Target As Range)
Dim Zelle As Range, wksH As Worksheet, Auswahl As Long
On Error GoTo hell
Set wksH = Worksheets("Hilf")
Set Target = Intersect(Target, Range("E2:F117,G2:H117"))
If Target Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Zelle In Target
 Select Case Zelle.Column
 Case 5, 6
 If Application.CountIf(wksH.Range("FahrGesp"), Zelle.Value) \> 0 Then
 Auswahl = MsgBox("Fahrer " & Zelle.Value & " hat keine Freigabe." & vbCrLf \_
 & vbCrLf & "Soll der Name gelöscht werden?", vbDefaultButton2 + vbYesNo + vbQuestion, "Auswahlfenster")
 If Auswahl = vbYes Then Zelle.Value = ""
 End If
 Case 7, 8
 If Application.CountIf(wksH.Range("AutoGesp"), Zelle.Value) \> 0 Then
 Auswahl = MsgBox("Auto " & Zelle.Value & " hat keine Freigabe." & vbCrLf \_
 & vbCrLf & "Soll der Name gelöscht werden?", vbDefaultButton2 + vbYesNo + vbQuestion, "Auswahlfenster")
 If Auswahl = vbYes Then Zelle.Value = ""
 End If
 Case Else
 'nix tun
 End Select
Next Zelle
hell:
Application.EnableEvents = True
End Sub
1 Like

Hallo Reinhard

Jaaaaa so soll es sein vielen dank

Jetzt können die 1:10 Rennen beginnen.

Vielen Dank für deine Hilfe

LG
Susanne

Jetzt können die 1:10 Rennen beginnen.

Hallo Susanne,

danke.
1:10!? D.h. ein Smart ist dann so k.A. 20-30 cm lang? Gibts da Bilder von so einem Rennen im Internet?

Nachtrag zu deiner Bespielmappe.
Eine aussagekräftige Beispielmappe ist oft sehr hilfreich um Erklärungen zu verdeutlichen.
Haste ja wohl gemerkt daß ich erst „loslegen“ konnte nachdem ich deine entsprechende Mappe hatte.

Du hast dir anscheinend viel Mühe gemacht Fahrernamen zu ersinnen, oder waren das echte vorhandene Namen?
Im ersteren Fall kannste dir viel wertvolle Zeit sparen indem du in AW2 reinschreibst:
Fahrer1
oder
Fahrer001
dann AW2 markierst und die rechte untere Zellecke nach unten ziehst.

In E2 kannst du reinschreiben:
=„Fahrer“ & Ganzzahl(Zufallszahl()*117)+1
oder
=„Fahrer“ & Text(Ganzzahl(Zufallszahl()*117)+1;„000“)
E2 dann nach unten kopieren

Gruß
Reinhard