2017-05-26 3 views
0

Auf Excel habe ich eine Liste von n Eingänge. Von Name 1 bis Name n. Diese haben einen dynamisch definierten Namen von "Name_1" bis "Name_n" Ich möchte folgendes tun:VBA dynamisch auf dynamischen Namen formatieren

Wenn die Kontrolle ja ist, dann sind alle von ihnen verfügbar, wenn die Kontrolle nein ist die von 3 bis n sind deaktiviert (in dem Sinne, dass ihre Hintergrundfarbe grau ist). Ich kann keine bedingte Formatierung verwenden, da ich nicht weiß, wie lange die Reihe von Eingaben sein wird.

Der Teil, um zu überprüfen, ob die Kontrolle ja oder nein ist, ist in Ordnung, so werde ich nur diejenige betrachten, wo ich überprüft habe, dass die Kontrolle nein ist.

Ich möchte so etwas wie dies tun:

if control=no Then 
for name in name_3,...,name_n '(since I do not know how much n is, I would loop until I get an error that name_(n+1) does not exist) 
Range("Name_3").Interior.Color=gray 

Aber vor allem habe ich Schwierigkeiten in (a) über den definierten Namen Looping, bis ich einen Fehler (b) Format der Zelle erhalten auf seinen definierten Namen

enter image description here

+0

Sie können sich wahrscheinlich nur um die bedingte Formatierung es größer zu einem Bereich der Anwendung verwenden, um zu überprüfen, als die maximal mögliche Anzahl von Namen; und Verwenden von Code, der beinhaltet, dass der Name existiert. Und für VBA können Sie wahrscheinlich eine 'For ... each'-Schleife verwenden. –

+0

Können Sie es genauer zeigen? – Thegamer23

+0

Was ist mit der bedingten Formatierung, die Sie nicht verstehen? –

Antwort

0

oben bei Ihrem Setup gelten folgende bedingte Formatierung auf Zellen b7: b100 (oder nach unten gehen zu b1 000 wenn du magst).

Rule 1: =OR(AND(ISNUMBER(SEARCH("Name",$A7)),$C$4="Yes"),AND(ISNUMBER(SEARCH("Name",$A7)),COUNTIF($A$7:A7,"Name*")<=2)) 

Rule 2: =AND(ISNUMBER(SEARCH("Name",$A7)),$C$4="no") 

Und sicher sein Stop if True für Regel 1

enter image description here

enter image description here

enter image description here

+0

Danke. Was passiert, wenn ich nicht Name1, Name2, ... sondern nur 1,2 ... habe? Kann es auf die gleiche Weise verwendet werden? – Thegamer23

+0

Sie müssen nur den 'Search'-Teil der Formeln durch eine Formel ersetzen, die' TRUE/FALSE' zurückgibt, je nachdem, ob es einen Namen in Spalte A gibt. Das könnte so einfach sein wie das Testen nach einem Leerzeichen, aber seit Ihr Beispiel ist offensichtlich nicht realistisch, Sie müssen das selbst herausfinden. Ich schlage auch vor, dass Sie die Formeln in eine Arbeitsblattzelle einfügen und sie so auswerten, dass Sie genau verstehen, was sie tun, bevor Sie sie anwenden/ändern. –

Verwandte Themen