Anzeige
Archiv - Navigation
1232to1236
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
Inhaltsverzeichnis

Gültigkeit

Gültigkeit
Markus
Hallo zusammen,
ich hab ein Problem, dass ich auch beim stundenlangen googeln noch nicht lösen konnte.
Vielleicht gibts dafür auch keine Lösung... Oder Ihr könnt mir helfen. Mal schauen...
Ich habe eine Tabelle, in der ich in ca. 4000 Feldern eine Formel stehen habe, die unterschiedliche Ergebnisse ergibt. Alternativ möchte ich in diesem Feld jetzt noch ein "x" akzeptieren.
Wenn ich nun eine Gültigkeitsliste erstelle mit dem x und der Formel, bekomme ich auch das Dropdown-Menü, aber er berechnet die Formel nicht im aktuellen Feld.
Die Liste sieht wie folgt aus. Wenn ich dann die Formel auswähle steht der richtige Wert im Feld, wird aber nicht berechnet...
Liste
'=WENN(SVERWEIS($C108;$AK$12:$AM$23;2;FALSCH)<AK$1;"#";SVERWEIS($AK$2+SVERWEIS($C108;$AK$12:$AM$23;3; FALSCH)+AK$1-1;$AR:$AV;5;FALSCH))
x
Habt Ihr dazu ne Idee?
Danke schonmal für Vorschläge.... Markus...

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
So, wie d.Fml da steht ('), ist sie nur Text! orT
18.10.2011 14:05:16
Luc:-?
Gruß Luc :-?
AW: Gültigkeit
18.10.2011 14:07:16
guentherh
Hallo Markus,
ich tendiere bzgl. Gültigkeit eher zu deiner These "..keine Lösung"
Stand Excel 2003: die Gültigkeit prüft nur eingegebene Werte bzgl. der Werte
Da die Formel in der Liste Text ist (wegen des ersten einfachen Apostroph's, erlaubst Du genau zwei Texte.
mit der Fünktion "Einfügen" abgelegte Werte werden (zumindest unter 2003) eh' nicht geprüft.
möglich wird das ganze über VBA, und Auswertung des Ereignisses Change des Worksheets.
hier ein Beispiel mit Deiner Formel.
https://www.herber.de/bbs/user/77068.xls
im Makro wird der gelb markierte Bereich abgefragt und geprüft.
Als Gimmik wird die Formel eingetragen, falls kein "X" verwendet wurde (Vergleichsart steht bei mir auf binär, deshalb ist auch Großschreibung nötig).
Das Gimmik läuft auf Fehler, wenn die Formel kein Ergebnis liefert, was ich nur durch Resume Next versteckt habe.
Schau's Dir mal an, ob diese Art der Lösung für Dich in Frage kommt. Den Code müsste man dann sicher noch etwas perfektionieren.
beste Grüße,
Günther
Anzeige
AW: Gültigkeit
18.10.2011 14:59:52
Markus
Hallo Günther,
erstmal Danke für deine Idee. Die hilft mir schon ein wenig weiter.
Leider habe ich natürlich das Problem, das die Formel in jeder Zelle etwas andere Zeilen und Spalten anspricht hat. Daher kann ich das so nicht ganz gebrauchen.
Ich hatte bereits den Weg versucht, wenn der Feldinhalt gelöscht wird, die Formel von einem anderen Ort zu kopieren, damit die relativen Bezüge sich mitändern.
sieht bei mir so in etwa aus:
<pre>Sub machwas()
If ActiveCell.Value = "" Then
Dim strActiveCell As String
strActiveCell = ActiveCell.Address
Range("AM108").Select
Selection.Copy
Range(strActiveCell).Select
ActiveSheet.Paste
End If
End Sub</pre>
In Zelle AM108 steht die Formel und von da hol ich mir die dann wieder in die aktive Zelle.
Ich hab nur noch ein Problem mit der Auslösung des Ereignisses und dem betroffenen Bereich. Da werde ich mir dein Skript mal anschauen, ob ich davon was verstehe und brauchen kann.
Oder fällt dir aufgrund meiner Idee spontan etwas anderes ein?
Gruß, Markus
Anzeige
AW: Gültigkeit
18.10.2011 15:08:34
Markus
Hallo Günther,
brauchst dir keine Gedanken mehr machen...
Hab einfach meinen Ansatz in dein VB "reinkopiert" und siehe da... In Kombination ist es genauso, wie ich es brauche... ;-)
Option Explicit
Dim ChangeAktiv As Boolean ' da aus dem Change-Ereignis wieder ein Change durchgeführt wird, muss ein deadlock abgefangen werden
<pre>Private Sub Worksheet_Change(ByVal Target As Range)
Dim ChangeAlreadyAktiv
'If ChangeAktiv Is Null Then ChangeAktiv = False 'beim ersten Mal Variable vorbelegen
ChangeAlreadyAktiv = ChangeAktiv
If (Not ChangeAktiv) And Target.Column > 3 And Target.Column < 35 And Target.Row > 1 And Target.Row < 110 Then
ChangeAktiv = True
If ActiveCell.Value = "" Then
Dim strActiveCell As String
strActiveCell = ActiveCell.Address
Range("AM108").Select
Selection.Copy
Range(strActiveCell).Select
ActiveSheet.Paste
End If
On Error GoTo 0
ChangeAktiv = ChangeAlreadyAktiv
End If
End Sub</pre>
Vielen vielen Dank...
Gruß, Markus
Anzeige
AW: Gültigkeit
18.10.2011 16:00:21
guentherh
Hallo Markus,
Die Lösung mit Copy/Paste ist ja auch flexibler bzgl. der Formel-Pflege.
für andere Anwendungsfälle: in Vba müsste man für relative Bezüge die FormulaR1C1-Eigenschaft mit entsprechender Syntax verwenden.
Gruß,
Günther

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige