Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1204to1208
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

VBA Gültigkeit Liste über FormulaR1C1 zuordnen

VBA Gültigkeit Liste über FormulaR1C1 zuordnen
neuer2011
Moin Moin!
ich habe folgendes Problem, daß eine Zelle per Gültigkeit/Liste automatisch per Makro füllen lassen würde, was leider nicht klappt. Es solll der Inhalt von fünf weiter unten stehenden Zellen auswählbar sein.
Wer kann helfen? Es kommt immer die Fehlermeldung "anwendungs- oder objektdefinierter Fehler"!
Bin für jede Hilfe dankbar.
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, FormulaR1C1:="=R[154]C,R[155]C,R[156]C,R[157]C,R[158]C"
' .IgnoreBlank = True
' .InCellDropdown = True
' .InputTitle = ""
' .ErrorTitle = ""
' .InputMessage = ""
' .ErrorMessage = ""
' .ShowInput = True
' .ShowError = True
End With
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 09:45:04
Reinhard
Hallo Neuer,
Sub tt()
With Range("A1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=A154:A158"
' .IgnoreBlank = True
' .InCellDropdown = True
' .InputTitle = ""
' .ErrorTitle = ""
' .InputMessage = ""
' .ErrorMessage = ""
' .ShowInput = True
' .ShowError = True
End With
End Sub

Gruß
Reinhard
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 09:56:44
Ass
Moin
nur zum Verständnis:
die Klasse Validation hat garkeine FormulaR1C1-Eigenschaft.
das verwechselst du mit dem Range-Objekt.
Gruß
Rudi
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 11:08:42
neuer2011
Danke für Eure schnellen Antworten!
Leider kann ich die Formel "Formula1:="=A154:A158"" nicht einsetzen, da die Verknüpfung immer zu den Zellen in den Reihen 154-158 bezieht. D.h. es kann auch E154:E158 sein.
Gibt es da auch eine Möglichkeit, die Formel variabel zu gestalten?
Anzeige
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 11:38:36
Reinhard
Hallo Neuer,
Möglichkeiten gibt es viele, welche willste denn :-)
Woher weiß Vba daß A, E oder AX vorliegt?
ActiveCell.Column o.ä. ?
Gruß
Reinhard
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 12:32:56
neuer2011
Hallo Reinhard,
mir ist die einfachste Lösung die liebste :-)
Über ActiveCell.Column bekomme ich eine Zahl, ich brache aber für "Formula1:=..." einen Buchstaben (z.B.Spalte C), oder?
Gruß
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 13:01:20
Reinhard
Hallo Neuer,

Dim Bstb As String
With ActiveCell.Validation
.Delete
Bstb = Split(ActiveCell.Address, "$")
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=" & Bstb & "154:" & Bstb & "158"

Gruß
Reinhard
Anzeige
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 13:56:12
neuer2011
Hallo Reinhard,
danke für den Code, leider gibt es bei der Zeile "Bstb = Split(ActiveCell.Address, "$")" immer eine Fehlermeldung (Typen unverträglich)...
Wie kann ich das verhindern?
Gruß,
Neuer
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 16:43:19
Reinhard
Hallo Neuer,
sorry, da hab ich was vergessen :-(
Sub tt()
Dim Bstb As String
With ActiveCell.Validation
.Delete
Bstb = Split(ActiveCell.Address, "$")(1)
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=" & Bstb & "154:" & Bstb & "158"
End With
End Sub

Gruß
Reinhard
Anzeige
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 13:10:30
Timo
Hallo Neuer,
versuche es doch so:
Sub tt()
varSpalte = Chr(ActiveCell.Column + 64)
varFormel = "=" & varSpalte & "154:" & varSpalte & "158"
With Range(varspalte & "1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=varFormel
' .IgnoreBlank = True
' .InCellDropdown = True
' .InputTitle = ""
' .ErrorTitle = ""
' .InputMessage = ""
' .ErrorMessage = ""
' .ShowInput = True
' .ShowError = True
End With
End Sub
Über Chr(activecell.column +64) holst Du dabei die aktuelle Spalte und addierst 64 hinzu. Ergibt bei Spalte A 1+64=65, Ascii Zeichen 65 ist "A", in der Zeile mit varFormel wird dann die Formel "gestrickt" und kann über die varFormel Variable in der Gültigkeit genutzt werden.
Bei mir hat der o.a. Code funktioniert.
viele Grüße
Timo
Anzeige
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 13:53:06
neuer2011
Hallo Timo,
danke für den Code, funktioniert auch, leider gibt doch noch ein Problem. Ich habe auch Spalten Z, AA, AB, usw. in Benutzung. Dabei passt dann leider die Berechnung für varSpalte nicht mehr....
Gruß,
Neuer
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 15:40:24
Timo
Hallo Neuer,
stimmt, dafür ist der Code so ungeeignet.
Diese Version sollte funktionieren:
Sub tt()
varSpalte = Left(ActiveCell.Address, InStr(2, ActiveCell.Address, "$"))
varSpalte = Replace(varSpalte, "$", "")
varFormel = "=" & varSpalte & "154:" & varSpalte & "158"
With Range(varSpalte & "1").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:=varFormel
End With
End Sub
Übrigens: Split() funktioniert hierbei nicht, da Split ein nullbasiertes, eindimensionales Datenfeld zurückgibt, für die Einarbeitung in die Formel aber der Datentyp Variant oder String benötigt wird.
Gruß
Timo
Anzeige
AW: VBA Gültigkeit Liste über FormulaR1C1 zuordnen
09.03.2011 16:12:30
neuer2011
Hallo Timo,
super, jetzt läuft alles!
Eine Frage hab ich noch:
Wenn die Zelle mit der Gültigkeit erstellt wurde, und ich diese über das Menü-Daten-Gültigkeit ansehen möchte, teilt mir Excel mit, daß "Die Auswahl enthält mehr als eine Prüfungsart. Sollen die aktuellen Einstellungen gelöscht und dann fortgefahren werden?" (Ok/Abbrechen)
Gruß,
Neuer
Ist vielleicht...
09.03.2011 17:34:29
Timo
...mehr als eine Zelle ausgewählt?
Ich habe es mit dem Code bei mir mal ausprobiert, konnte das Problem aber nur provozieren, wenn ich mehrere Zellen mit Gültigkeitsprüfung ausgewählt habe.
Gruß
Timo
AW: Ist vielleicht...
10.03.2011 12:24:12
neuer2011
richtig, eine markierte Zelle besteht jeweils aus drei verbundenen Zellen.
Gruß,
Neuer
Anzeige
AW: Ist vielleicht...
10.03.2011 13:59:22
Timo
Hallo Neuer,
das muss man ja erst mal wissen...
So kann das natürlich zu Problemen führen.
Allerdings: Wenn ich z.B. Zellen A1, B1 und C1 verbinde, auswähle und dann das Makro starte, wird nur Spalte A für die Gültigkeit genomen. Gehe ich dann über Daten Gültigkeit, werde ich gefragt, ob diese Gültigkeit für die anderen Zellen übernommen werden soll.
Bei Verbund von A1 bis A3 das gleiche Spielchen...
War vorher in einer der jeweils drei Zellen vielleicht schon eine andere Gültigkeitsprüfung vorhanden?
Verbund auflösen und für Jede der drei Zellen einzeln testen - wenn ja, dann erst mal die vorherigen Bedingungen löschen und dann nochmals das Makro drüber laufen lassen.
Wenn es das nicht ist, komme ich ohne eine Beispielmappe nicht weiter.
Gruß
Timo
Anzeige
AW: Ist vielleicht...
10.03.2011 16:45:42
neuer2011
Hallo Timo,
danke für deine Hilfe!
tatsächlich, wenn ich den Verbund der drei Zellen auflöse, dann die Gültigkeit der drei Zellen entferne, danach wieder die Zellen verbinde, dann die Gültigkeit per Makro hinzufüge, dann fragt Excel, ob die Gültigkeit übernommen werden soll.
Ist eigentlich kein Problem, da dieser Fall ziemlich selten auftritt... Allerdings konnte ich über den Makro-Recorder die Meldung nicht sichtbar machen... sonst hätte ich sie im Modul automatisch abfragen und alles korrekt einstellen können.
Gruß,
Neuer

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige