Microsoft Excel

Herbers Excel/VBA-Archiv

Validierung auslesen | Herbers Excel-Forum


Betrifft: Validierung auslesen von: Thomas S.
Geschrieben am: 20.01.2012 16:26:12

Hallo weltbestes Forum

kann mir jemand einen Tipp geben?

Ich möchte in einem Code die Validierung einer bestimmten Zelle auslesen, und diese Zelle in Abhängigkeit der Validierung farblich verändern.
Das heist ist für eine Zelle in einem bestimmten Bereich die Gültigkeit für eine bestimmte Liste festgelegt, dann möchte ich sie gelb färben und nicht sperren.
Wenn die Validierung nicht festgelegt ist, möchte ich die Zelle grau färben und sperren.

Ich finde keine Abfrage, die mir das entsprechende Ergebnis liefert.

Set a = Sheets("Konfigurator")
a.Range("B2").Validation.Type = 3 Then bringt einen Laufzeitfehler 1004 ...

Vielleicht kann mir jemand auf die Sprünge helfen?

Vielen Dank im Voraus

Gruß Thomas S.

  

Betrifft: AW: Validierung auslesen von: Josef Ehrensberger
Geschrieben am: 20.01.2012 17:00:06


Hallo Thomas,

ohne jetzt näher darüber nachzudenken
If  a.Range("B2").Validation.Type = 3 Then



« Gruß Sepp »



  

Betrifft: AW: Validierung auslesen von: Thomas S.
Geschrieben am: 20.01.2012 18:12:14

Hallo Sepp

zeigt bei mir immer 3 an ...

funktioniert bei mir nicht. Es gibt im Forum einige Lösungen mit for all ...
Leider kann ich das nie nachvollziehen.

Ich habe jetzt eine Workaround über eine Liste mit den Validierungen und darauf beziehe ich mich an anderer Stellen und färbe dann die Zellen etc.

Vielen Dank trotzdem für Deinen Tipp. Mal schauen, ob noch ein paar andere Vorschläge kommen.

VG Thomas S.


  

Betrifft: Validierung auslesen - Du meinst sicher so ... von: Luc:-?
Geschrieben am: 21.01.2012 04:47:07

…etwas, Thomas …
For Each xVal In a.UsedRange.SpecialCells(xlCellTypeAllValidation), wobei a zuvor auf das entsprd Sheets(index) gesetzt worden sein muss. Halte a aber nicht für gut (zu kurz und damit kaum aussagefähig).
Dabei gibt es folgende Probleme:
1. Es wdn auch unvalidierte Zellen als validiert angenommen.
2. VerbundZellen verursachen Fehler in den verborgenen Folgezellen.
Lösung:
1. Sind VZellen enthalten, wurden aber nicht validiert, müssen diese in der For Each-Schleife mit hier If xVal.MergeCells Then ohne weitere Aktion abgefangen wdn.
2. Sind validierte VZellen enthalten, darf nur deren 1.Zelle in die Abfrage einbezogen wdn, also nach der unter 1. genannten Abfrage muss die Aktion mit xVal.MergeArea.Cells(1) oder xVal.MergeArea(1) erfolgen. Ggf kann ersatzweise auch stets xVal.Cells(1) geschrieben wdn, da ja xVal As Range deklariert wdn muss.
Trifft das alles nicht zu, sollte Sepps Vorschlag fktionieren, wobei ich nicht 3 schreiben, sondern die vorgesehene und diesem Wert entsprd XlDVType-Enumerationsvariable xlValidateList benutzen würde → ist aussagekräftiger.
Damit wird aber nur eine der Vorgabe entsprd Zelle anvisiert. Was dann mit ihr geschehen soll, muss natürlich noch geschrieben wdn.
Gruß + schöWE, Luc :-?


Beiträge aus den Excel-Beispielen zum Thema "Validierung auslesen"