Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
964to968
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
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Gültigkeit automatisieren

Gültigkeit automatisieren
03.04.2008 09:58:00
Schallbach
Hallo!
Habe nun die Gültigkeit umgestellt auf einen Zellenbezug und
habe die Formel (=INDIREKT("Tabelle2!F26:F38")) in "Daten/Gültigkeit/Einstellungen/Quelle" reingeschrieben.
Das funktioniert wunderbar! NUR
Wie kann ich nun die Eingabemeldung dazu anpassen außer von Hand?
Ist es möglich auch diese Meldung über einen Zellenbezug anzupassen?
Gruss
Schallbach

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gültigkeit automatisieren
03.04.2008 10:22:26
Renee
Hi Schallbach,
Nein, das ist nur über VBA möglich.
Wenn du VBA benutzt, würde ich auf den Einsatz von INDIREKT verzichten, da sonst Inkompatibiltäten bei verschiedenen Sprachversionen auftreten (Formel!). Ich würde dann den Bereich der Liste mit einem Namen versehen (als Beispiel hier GListe bezieht sich auf =Tabelle2!$F$26:$F$38). Dieser Beispielcode setzt die Gültigkeit und Eingabemeldung für Tabelle1 in den Zellen A1:A10 bezogen auf die Liste GListe

Dim sEingabeMsg As String
Dim rC As Range
sEingabeMsg = "Erlaubt sind: "
For Each rC In Tabelle2.Range("GListe")
sEingabeMsg = sEingabeMsg & IIf(rC.Value = "", "", rC.Value & ",")
Next
sEingabeMsg = Left(sEingabeMsg, Len(sEingabeMsg) - 1)
With Tabelle1.Range("A1:A10").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=GListe"
.InputMessage = sEingabeMsg
End With


GreetZ Renée

Anzeige
AW: Gültigkeit automatisieren
03.04.2008 10:47:00
Schallbach
Hallo!
Danke für die Hilfe!
Habe noch ein Problem!
Habe den Code kopiert und in ein Macro geschrieben.
Wie führe ich das aber aus was muß ich im Tabellenblatt reinschreiben?
Ist das richtig?
If Target.Column = 4 Then
Call EingabezelleÜberwachung
End If
Gruss
Schallbach

AW: Gültigkeit automatisieren
03.04.2008 10:52:44
Renee
Hi,
Kannst du ein bisschen genauer beschreiben, was du machen willst?
a) Welche Zellen in welcher Tabelle sollen die GültigkeitsPrüfung bekommen?
b) Wie dynamisch ist die Gültigkeitsliste ? Wird da daurend wieder geändert, erweitert, verkürzt?
c) Target.Column = 4 scheint Bestandteil einer Event-Prozedur zu sein, welcher?
GreetZ Renée

Anzeige
AW: Gültigkeit automatisieren
03.04.2008 11:48:00
Schallbach
Hallo!
Also
Die Gültigkeit habe ich ich für Tabelle "Auftragsstand" Range ("D3:D231")
Es dürfen nur kleinbuchstaben verwendet werden z. B. m, s,a,r,rm,t,.. max. 13 verschiedene.
Jetzt habe ich eine normale Gültigkeit wo ich die Buchstaben vorgegeben habe und wenn ich den Bereich angeklickt habe dann kommt die INfobox mit den Buchstaben und derErklärung dazu. Bei Eingabe eines falschen Buchstaben mit Fehlermeldung.
Da sich die Buchstaben aber öfters ändern (es sind Bearbeitungsorte Anfangsbuchstaben) möchte ich das ändern.
Ich habe auch bereits eine Tabelle "SD" wo die Daten bereits aufgelistet sind und ich hätte gerne mit diesen Daten statt der normalen Gültigkeit gearbeitet.
Die Daten stehen in Tabelle "SD" Range("F26:F38") die Buchstaben und die Orte dazu in ("B26:B38")
Hoffe ich habe mich halbwegs verständlich ausgedrückt.
Gruss
Schallbach

Anzeige
AW: Gültigkeit automatisieren
03.04.2008 13:28:03
Renee
Hallo Schallbach,
Ich sehe überhaupt nicht ein, warum du das so kompliziert machen willst.
Da es sich um eine dynamische (längere) Liste handelt, nutzt dem Benutzter ein Hinweis bzw. eine Fehlermeldung mit den Angaben was er eingeben kann, herzlich wenig. Im Schnitt kann sich eine Durchschnittsperson max. 5 Werte im Kurzzeitgedächtnis halten. Die gültigen Werte stehen ja eh alle in der Dropdown-Liste zur Verfügung und lassen sich von dort auswählen. Dies Werte ändern sich ja automatisch, in der Dropdownl-Liste, wenn du mit Namen oder INDIREKT Verweisen arbeitest.
Empfehlung: Lass das Ganze VBA-Gefummel weg und arbeite mit einfachen, verständlichen Meldunge wie "Bitte einen Wert aus der Liste auswählen!" oder "Eingabewert ist nicht in der Liste!"...
GreetZ Renée

Anzeige
AW: Gültigkeit automatisieren
03.04.2008 14:32:32
Schallbach
Hallo!
Hab jetzt nur ein paar Probleme noch!
1. Hätte gerne dass die InfoBox das ganze nicht in einer Schlange schreibt sondern untereinender.
2. Wenn ein falscher buchstabe eingetragen wird dann soll das nicht möglich sein (Info nur lt. Infobox und löschen des falschen Buchstabes)
3. Das ganze funktioniert super ganz besonders gefällt mir die Dropdown-Liste, aber ich brigs nicht hin wenn ich das ganze nicht in Tabelle1 und Tabelle2 habe sondern in "Auftragsstand" und "SD"
Wollte die Arbeitsmappe als Upload File anhängen aber leider funktionierts nicht, sagt immer ungültiges Dateiformat obwohl xls, auf LAufwerk C: und nur 32KB.
Gruss
Schallbach

Anzeige
AW: Gültigkeit automatisieren
03.04.2008 14:56:00
Renee
Hi GFuger,
Definiere den Namen GListe als =SD!$A$2:$A$14
Lösche den Namen GListeE
Bau diesen Code in das Tabellenblatt SD

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sEingabeMsg As String
Dim rC As Range
If Intersect(Target, Me.Range("A2:B100")) Is Nothing Then Exit Sub
sEingabeMsg = "Erlaubt sind:" & vbCrLf
For Each rC In Tabelle5.Range("GListe")
sEingabeMsg = sEingabeMsg & IIf(rC.Value = "", "", rC.Offset(0, 1).Value & vbCrLf)
Next
sEingabeMsg = Left(sEingabeMsg, Len(sEingabeMsg) - 2)
With Tabelle1.Range("D3:D231").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=GListe"
.InputMessage = sEingabeMsg
End With
End Sub


GreetZ Renée

Anzeige
AW: Gültigkeit automatisieren
04.04.2008 09:53:59
Renee
Hi Schallbach,
Fange bitte nicht immer wieder einen neuen Thread zu gleichen Thema an. Das wird von den HelferInnen nicht gern gesehen!
Dein Code in den Selection_Change der Zieltabelle zu verlegen ist völlig verkehrt.
Warum bleibst Du nicht bei meinen Empfehlungen. Der Code gehört in das Tabellenblatt SD, denn nur wenn dort etwas ändert ist der Aufbau der Gültigkeitsliste nötig!
Zu deinen anderen Problemen:
1. Listbox auf 1stem Eintrag: Da die Zellen am Anfang leer sind, ist die Listbox auf dem ersten leeren Eintrag. Wenn du an erster Stelle deiner GListe einen leeren Eintrag machst, steht sie auf diesem!
2. Gültigkeit testen, ergänze den Code so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sEingabeMsg As String
Dim rC As Range
If Intersect(Target, Me.Range("A2:B100")) Is Nothing Then Exit Sub
sEingabeMsg = "Erlaubt sind:" & vbCrLf
For Each rC In Tabelle5.Range("GListe")
sEingabeMsg = sEingabeMsg & IIf(rC.Value = "", "", rC.Offset(0, 1).Value & vbCrLf)
Next
sEingabeMsg = Left(sEingabeMsg, Len(sEingabeMsg) - 2)
With Tabelle1.Range("D3:D231").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=GListe"
.InputMessage = sEingabeMsg
.IgnoreBlank = False
.ShowInput = True
.ShowError = True
End With
End Sub


3. Das mit den 7 Einträgen begreife ich nicht. Hab deinen Code nicht näher betrachtet, da zu statisch!
GreetZ Renée

Anzeige
AW: Gültigkeit automatisieren
04.04.2008 10:21:37
Schallbach
Hallo!
Hab ich leider nicht gewusst! Hab geglaubt das ist schon zu lange her und da schaut keiner mehr.
Sorry!
Das mit Code in SD funktioneirt nicht!
"SD" ist meine Datenbank in der natürlich geändert werden darf das sind meine Grundeinstellungen.
In der Tabelle "Auftragsstand" muss dann die Gültigkeit greifen und es dürfen nur die Einträge gültig sein die in "SD" vordefiniert sind.
Die InputMessage unterscheidet sich von der "GListe" da ich noch Erklärungen dazu brauche, aber sie streikt ab dem strKE8.
Habe das so gemacht weil ichs nicht anders kann bin kein Exce und VBA Profi.
Gruss
Schallbach

Anzeige
AW: Gültigkeit automatisieren
04.04.2008 10:36:35
Renee
Hi nochmals,
Wenn du in den Zellen A1:B100 im Blatt SD eine Änderung machst, wird die Gültikeit auf der Tabelle1 automatisch nachgeführt und aktualisiert!
Die GListe ist auf den Bereich beschränkt, wie er im Namen definiert ist.
Da du Leerzeilen im Dropdown erlaubst, ist es schwierig eine dynamische Liste, die sich automatisch erweitert, aufzubauen.
Die Eingabemeldung kann maximum einen String von 256 Zeichen aufnehmen. Wird er grösser (was bei deinem Makro der Fall ist) gibts eine Codeabbruch. Womit wir wieder bei der Anfangsdiskussion sind, dass ich deinen ganzen Ansatz als falsch betrachte.
Arbeite mit den Standard-Excel Funktionen. Vermeide VBA. Funktion kommt vor Schönheit. Simple is Beautiful.
GreetZ Renée
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige