Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
704to708
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
704to708
704to708
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Validation.Add bzw. ~.Modify klappt nicht

Validation.Add bzw. ~.Modify klappt nicht
13.12.2005 11:14:29
Peter
Hallo Forum,
auch das Lesen von ca. 20 Beiträgen hier hat mich noch nicht weitergebracht:
für meine Gültigkeitslisten verwende ich benannte Bereiche in anderen Tabellenblättern der gleichen Arbeitsmappe.
Im Tabellenblatt, in dem die Gültigkeitsprüfung durchgeführt wird, ist standardmäßig (ohne VBA) als Liste "=dyn_benutzer" eingegeben. Das ist ein dynamischer Bereich, der mit BEREICH.VERSCHIEBEN etc. erstellt ist.
Das funktioniert alles.
Über einen Commandbutton möchte ich für die jeweils aktive Zelle die Gültigkeit auf einen anderen benannten Bereich switchen.
Ausschnitt aus dem Code:
eingabe.Unprotect Password:="xxx"
If Not Intersect(ziel, eingabe.Range("dyn_tn")) Is Nothing Then
ziel.Validation.Modify Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=dyn_xm"
Else
MsgBox "Der Zellzeiger muss in der 1. Spalte stehen."
End If
eingabe.Protect Password:="xxx", UserInterfaceOnly:=True
Der Code läuft ohne Fehlermeldung ab, nur die Gültigkeitsliste wird nicht geändert. Ich habe es auch schon mit Löschen und Neusetzen der Validation-Eigenschaft probiert, oder die Formula1 aus einer Stringvariablen genommen, es will einfach nicht.
Vielen Dank für jede Hilfe.
Gruß
Peter

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Validation.Add bzw. ~.Modify klappt nicht
13.12.2005 12:08:08
ANdreas
Hallo Peter,
ich habe gerade mal einen kleines Testmakro (Excel 2003) geschrieben. Bei mir funktioniert es so:

Sub ChangeValidationTest()
Dim shEingabe As Worksheet
Dim rngZiel As Range, c As Range
Set shEingabe = Worksheets("Tabelle1")
Set rngZiel = Selection
With shEingabe
.Unprotect Password:="xxx"
If Not Intersect(rngZiel, .Range("dyn_tn")) Is Nothing Then
On Error GoTo ErrorHandler
For Each c In Intersect(rngZiel, .Range("dyn_tn"))
c.Validation.Modify Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=dyn_xm"
Next c
On Error GoTo 0
Else
MsgBox "Der Zellzeiger muss in der 1. Spalte stehen."
End If
.Protect Password:="xxx", UserInterfaceOnly:=True
End With
Exit Sub
ErrorHandler:
Select Case Err.Number
Case 1004
c.Validation.Delete
c.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=dyn_xm"
Resume Next
Case Else
MsgBox Err.Description
Resume Next
End Select
End Sub

Hoffe es hilft weiter,
Andreas
Anzeige
AW: Validation.Add bzw. ~.Modify klappt nicht
13.12.2005 12:39:06
Peter
Hallo Andreas,
vielen Dank für deine schnelle Antwort und die Mühe, ein Beispiel zu testen.
1. Deine Version ermöglicht eine Anwendung auf mehr als eine Zelle, ist natürlich flexibel, kann ich ruhig so lassen, auch wenn es bei mir immer nur um eine Zelle geht.
2. Ich bin bei deinem Code auf den ErrorHandler mit 1004 gelaufen, bei
c.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=dyn_xm"
kam dann der nächste (nun nicht mehr abgefangene) 1004er.
Beim ersten Mal konnte ich im Einzelschritt dennoch weiter und tatsächlich wurde die Validierung geändert.
Bei weiteren Versuchen ging's nicht mehr. Das der Fehler nur einmal abgefangen wird,
ist klar. Man kann Err.Clear dazwischen setzen und eine Endlosrunde drehen.
Ich verstehe aber immer noch nicht, warum die eigentliche Methode .Modify bzw. .Add nicht laufen will.
Fällt dir noch was ein?
Gruß
Peter
Anzeige
AW: Validation.Add bzw. ~.Modify klappt nicht
13.12.2005 14:09:22
ANdreas
Hallo Peter,
ich kann das Problem nicht nachvollziehen.
Interessant wäre es zu wissen, in welcher Zelle der Fehler auftritt. Ist dort eine Gültigkeitsprüfung schon drin? Wenn ja wieviele?
Evtl. zeichnest Du bei Dir das Löschen der Gültigkeitsprüfung mal auf und fügst es beim Fehler 1004 ein. Ich vermute dass das Löschen fehlschlägt und dann das .Add auf einen Fehler läuft.
Gruß
Andreas
AW: Validation.Add bzw. ~.Modify klappt nicht
13.12.2005 16:29:41
Peter
Hallo Andreas,
ja, es ist vorher schon eine Gültigkeitsprüfung drin, und zwar auch xlValidateList.
Deshalb versuche ich es ja im normalen Code mit *.Modify. *.Add kommt erst
ins Spiel, weil er bei Modify einen Fehler wirft.
Ich teste das mal, ob das Delete nicht hinhaut und melde mich wieder.
Kann es sein, dass es bei dir läuft, weil du Version 2003 hast?
Gruß
Peter
Anzeige
AW: Validation.Add - Workaround gefunden
13.12.2005 16:58:09
Peter
Hallo Andreas,
ich habe eine (nur *etwas* unelegante Lösung). Du hast richtig vermutet, dass das Löschen nicht richtig kam. Wenn ich nach Zurücksetzen des Codes wieder in die Tabelle gesehen habe,
war die alte Validierung noch drin, nach Verlassen der ausgewählten Zelle und wieder auswählen, war sie dann weg (also doch gelöscht). In der Laufzeit hat er das Löschen nicht bemerkt. Also habe ich auf Modify gleich ganz verzichtet und das im normalen Code (ohne errorhandler) ganz hässlich so gemacht:
With c
.Validation.Delete
.Offset(1, 0).Select
.Select
.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="=dyn_xm"
End With
Das läuft.
Noch mal danke für deine Hilfe und einen schönen Abend
Peter
Anzeige
AW: Validation.Add - Workaround gefunden
14.12.2005 09:17:47
ANdreas
Hallo Peter,
ist wirklich etwas unelegant, aber was will man machen.
Vielleicht kannst Du mal versuchen das Selecten durch Application.Calculate zu ersetzen. Eventuell reicht das dann auch.
Gruß
Andreas
AW: Validation.Add - Workaround gefunden
14.12.2005 12:19:17
Peter
Hallo Andreas,
mit Application.Calculate habe ich es - nur so aus akademischem Interesse - mal versucht,
es läuft nicht.
Also lieber unelegant aber funzt.
Gruß
Peter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige