hQuadrat
14.11.2008, 10:27
Hallo,
ich habe ein etwas komplizierteres Problem bei dem ich momentan einfach nicht weiterkomme - vielleicht hat ja jemand von Euch eine zündende Idee hierzu...?
Situation: Ich habe eine Tabelle, auf der bestimmte Zeilen via VBA angezeigt oder ausgeblendet werden. (Es ist eine Art "projektspezifischer Fragebogen".)
In einem weiteren Tabellenblatt werden verschiedene Kriterien definiert, aufgrund deren entschieden wird ob die jeweilige Zeile angezeigt werden soll oder nicht. In einer Matrix werden dann die "Eigenschaften" der einzelnen Fragebogen-Zeilen definiert. Basierend auf den Angaben des Bearbeiters in einer VBA-Userform entscheidet das VBA-Programm dann ob eine Zeile ausgeblendet wird oder nicht. Soweit so gut, es funktioniert.
Problem: Eines dieser "Entscheidungskriterien" ist ein Zahlenwert, welcher (maximal) sechs verschiedene Werte annehmen können soll. In der "Konfigurationsmatrix" werden die entsprechenden Zellenwerte deshalb durch eine Gültigkeitsregel eingeschränkt. Soweit auch erstmal alles OK.
Nun ist es aber durchaus denkbar, dass sich diese 6 Zahlenwerte früher oder später ändern werden... Die Konsequenz hieraus wäre zunächst natürlich, die Referenzfelder der Gültigkeitsregel den neuen Werten anzupassen. Die "alten" Werte in der Konfigurationsmatrix bleiben dabei aber ungeachtet der neuen Gültigkeitsregel bestehen - und so würde natürlich auch die komplette Berechnung des VBA-Programms nicht mehr stimmen. Mit anderen Worten: man wäre gezwungen, die komplette Konfigurationsmatrix (und diese ist schon sehr umfangreich!) auf Basis der neuen Werte neu zu erstellen.
Ich suche also nach einem Weg, die alten Werte in der Konfigurationsmatrix in die Neuen umzuschreiben. Wenn ich also als Referenzwert (Gültigkeit) die Zahl 100 habe und diese meinetwegen auf 200 ändere, dann sollten sämtliche Zellen der Konfigurationsmatrix mit dem Wert 100 den neuen Wert 200 erhalten.
Ursprüngliche Idee war, dass die Konfigurationsmatrix "beim Ändern" der Gültigkeits-Referenzzelle aktualisiert wird (VBA-Such-Ersetzen-Funktion). Dies wäre ggf. denkbar über das VBA-Ereignis Worksheet_Change. Es scheitert dann aber vermutlich daran, dass um ein Vergleichswert fehlt, um die zu ersetzenden Werte zu ermitteln. (Sobald das Ereignis eintritt, ist der alte Wert ja bereits überschrieben! Oder nicht?) Diese Methode scheitert insofern also aus.
Hat vielleicht jemand von Euch eine Idee, wie ich dies lösen könnte? (Ggf. auch über eine Userform...?)
Zusätzliche Hilfszellen in der "Konfigurationstabelle" möchte ich eigentlich möglichst vermeiden, da die Zeilen und Spalten teils hardcodiert angesprochen werden, teils flexibel über eine Suchfunktion (also ein insgesamt relativ komplexes Konstrukt ;) )
Grüße,
ich habe ein etwas komplizierteres Problem bei dem ich momentan einfach nicht weiterkomme - vielleicht hat ja jemand von Euch eine zündende Idee hierzu...?
Situation: Ich habe eine Tabelle, auf der bestimmte Zeilen via VBA angezeigt oder ausgeblendet werden. (Es ist eine Art "projektspezifischer Fragebogen".)
In einem weiteren Tabellenblatt werden verschiedene Kriterien definiert, aufgrund deren entschieden wird ob die jeweilige Zeile angezeigt werden soll oder nicht. In einer Matrix werden dann die "Eigenschaften" der einzelnen Fragebogen-Zeilen definiert. Basierend auf den Angaben des Bearbeiters in einer VBA-Userform entscheidet das VBA-Programm dann ob eine Zeile ausgeblendet wird oder nicht. Soweit so gut, es funktioniert.
Problem: Eines dieser "Entscheidungskriterien" ist ein Zahlenwert, welcher (maximal) sechs verschiedene Werte annehmen können soll. In der "Konfigurationsmatrix" werden die entsprechenden Zellenwerte deshalb durch eine Gültigkeitsregel eingeschränkt. Soweit auch erstmal alles OK.
Nun ist es aber durchaus denkbar, dass sich diese 6 Zahlenwerte früher oder später ändern werden... Die Konsequenz hieraus wäre zunächst natürlich, die Referenzfelder der Gültigkeitsregel den neuen Werten anzupassen. Die "alten" Werte in der Konfigurationsmatrix bleiben dabei aber ungeachtet der neuen Gültigkeitsregel bestehen - und so würde natürlich auch die komplette Berechnung des VBA-Programms nicht mehr stimmen. Mit anderen Worten: man wäre gezwungen, die komplette Konfigurationsmatrix (und diese ist schon sehr umfangreich!) auf Basis der neuen Werte neu zu erstellen.
Ich suche also nach einem Weg, die alten Werte in der Konfigurationsmatrix in die Neuen umzuschreiben. Wenn ich also als Referenzwert (Gültigkeit) die Zahl 100 habe und diese meinetwegen auf 200 ändere, dann sollten sämtliche Zellen der Konfigurationsmatrix mit dem Wert 100 den neuen Wert 200 erhalten.
Ursprüngliche Idee war, dass die Konfigurationsmatrix "beim Ändern" der Gültigkeits-Referenzzelle aktualisiert wird (VBA-Such-Ersetzen-Funktion). Dies wäre ggf. denkbar über das VBA-Ereignis Worksheet_Change. Es scheitert dann aber vermutlich daran, dass um ein Vergleichswert fehlt, um die zu ersetzenden Werte zu ermitteln. (Sobald das Ereignis eintritt, ist der alte Wert ja bereits überschrieben! Oder nicht?) Diese Methode scheitert insofern also aus.
Hat vielleicht jemand von Euch eine Idee, wie ich dies lösen könnte? (Ggf. auch über eine Userform...?)
Zusätzliche Hilfszellen in der "Konfigurationstabelle" möchte ich eigentlich möglichst vermeiden, da die Zeilen und Spalten teils hardcodiert angesprochen werden, teils flexibel über eine Suchfunktion (also ein insgesamt relativ komplexes Konstrukt ;) )
Grüße,