Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1704to1708
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

Listindex auslesen

Listindex auslesen
08.08.2019 13:00:18
Jens
Hallo
weis jemand wie man den Listindex auslist von einer Auswahlliste die über die Datenprüfung in einer Zelle erstellt wurde?
Sprich mal wählt den zweiten Eintrag aus und in einer Anderen zelle steht dann die Zahl 2.
Wie geht das?

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "C6" Then  '
bei dem Code bekomme ich die fehlermeldung.
die Methode Range ist fehlgeschlagen

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listindex auslesen
08.08.2019 13:16:08
Mullit
Hallo,
wenn Deine Quelldaten auf einem externen Blatt liegen, mußt Du das mit angeben:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address(0, 0) = "C6" Then  '<== Gültigkeitszelle
      MsgBox Application.Match(Target.Value, Sheet3.Range(Mid$(String:=Target.Validation.Formula1, Start:=2)), 0)
   End If
End Sub

Gruß, Mullit
AW: Listindex auslesen
08.08.2019 14:09:19
Jens
nein es liebt alles auf dem selben Blatt.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "C6" Then  '
so geht es auch nicht.
Warum?
Anzeige
AW: Listindex auslesen
08.08.2019 14:35:39
Daniel
HI
also bei mir funktioniert dein Code.
das Sheet brauchst du nicht angeben. Bei Range kann man das Tabellenblatt auch zusammen mit der Zelladresse angeben, dh Range("'Tabelle 2'!A1") funktioniert! und das Fehlen ist nicht die Ursachen
lade bitte mal die Datei hoch, das muss man sich genauer anschauen.
vielleicht hast du ja auch den Blattschutz aktiv und kannst deswegen nichts in die Zelle schreiben.
außerdem würde ich hier nicht mit dem ChangeEvent arbeiten, sondern mir das ganze als Funktion erstellen.
dh folgenden Code in ein allgemeines Modul:
Function Validation_Index(Zelle As Range) As Variant
With Zelle.Validation
If .Type  xlValidateList Then
Validation_Index = "#NoValidationList"
ElseIf Zelle.Value = "" Then
Validation_Index = ""
ElseIf .Formula1 Like "=*" Then
Validation_Index = Application.Match(Zelle.Value, Range(Mid(.Formula1, 2)), 0)
Else
Validation_Index = Application.Match(CStr(Zelle.Value), Split(.Formula1, ";"), 0)
End If
End With
End Function
und dann in Zelle B2 die Formel
=Validation_Index(C6)
die Funktion habe ich so geschrieben, dass sowohl Zellbezüge als auch direkt eingegebene Werte verarbeiten kann.
Gruß Daniel
Anzeige
AW: Listindex auslesen
08.08.2019 15:06:08
Jens
Besten Dank.
Ich will den Index in code holen und nicht in das Tabellenblatt.
die Ausgabe in das Blatt habe ich nur gemacht, damit ich sehe was passiert.
hier meine Datei
https://www.herber.de/bbs/user/131332.xlsm
habe es mal vereinfacht.
Wobei nun garnichts mehr geht.
Ist mir alles ein Rätsel
AW: Listindex auslesen
08.08.2019 15:09:53
Jens
oder kann man den Wert deine Funktion einfach in eine Variable schreiben, die ich dann verwenden kann. Das wäre das beste.
AW: Listindex auslesen
08.08.2019 15:16:35
Daniel
Hi
naja, MITDENKEN ist beim Programmieren hilfreich.
wenn du die Werte für die Validation-List nicht über einen Zellbereich definierst sondern über die direkte Werteingabe, dann kann auch nicht mit RANGE auf einen Zellbereich zugreifen.
schau dir trotzdem mal meine Funktion an, da sind beide Möglichkeiten für die Definition der Auswahlliste vorgesehen, da siehst du wie du in diesem Fall vorgehen musst.
Btw, du kannst meine Function in einem Makro einsetzen.
Gruß Daniel
Anzeige
AW: Listindex auslesen
08.08.2019 15:32:03
Jens
hallo,
wenn ich den Code in eine andere Datei geben dann funktioniert er.
Wenn ich ihn in meiner Datei einbaue dann kommt der Fehler.
Weist du warum?
noch was. Später soll es so sein, dass der Werte der Liste zugegeben wird und in einer Variabeln in VBA steht.
Aber der BEreich indem diese Abfrage der daten Erfolgt ist begrenzt.
in Spalte B ab Zeile 3 bis zum letzten Wert der Zeile.
Wenn dann eine Zelle des BEreiches aktiviert wird, dann lest er von dieser zelle den entsprechenden Index der Auswahlliste aus.
https://www.herber.de/bbs/user/131334.xlsm
Kannst du mir hierzu noch helfen?
Anzeige
AW: Listindex auslesen
08.08.2019 15:47:05
Daniel
Hi
verwende den RICHTIGEN Tabellenblattnamen!
also den, auf dem die Tabelle für die Gültigkeitsliste liegt und das ist in deinem Fall "TD".
meine Anmerkung, dass du den vor dem Range nicht brauchst, gilt nur für den Fall, dass der Code in einem allgemeinen Modul liegt.
Liegt der Code jedoch in einem Tabellenblattmodul, musst du ihn vor dem Range hinschreiben, weil ansonsten das Tabellenblatt des Moduls angenommen wird.
Gruß Daniel
AW: Listindex auslesen
08.08.2019 15:55:08
Jens
Danke.
so gehts

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "C6" Then  '
Kann man das Target noch so anpassen das ich darauf einfluss nehmen kann?
hätte es noch so versucht

Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("Aufstellung").Cells(2, 2) = Application.Match(Worksheets("Aufstellung").Cells( _
3, 3).Value, Worksheets("TD").Range(Mid$(String:=Worksheets("Aufstellung").Cells(3, 3).Validation.Formula1, Start:=2)), 0)
End Sub

es tut sich nichts. nicht mal ein Fehler.
Anzeige
AW: Listindex auslesen
09.08.2019 09:48:39
Daniel
kommt darauf an, was du vor hast.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige