Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Datenüberprüfung - Listen hintereinander
#1
Hi Leute,

ich habe vier Listen mit Namen - alle dynamisch als Tabelle formatiert.

Nun möchte ich, dass - bedingt durch den Zellnamen - die Listen hintereinander im Dropdown-Menü auftauchen. Per =indirekt() kann ich auf eine der Listen zugreifen ... soweit bin ich schon. Kann ich dann auch irgendwie die anderen dahinter hängen? Es sollte die erste Liste, auf die Bezug genommen wird auch zuerst im Dropdown auftauchen.

Habe es im Anhang versucht darzustellen...


Gruß


Angehängte Dateien
.xlsx   Spalten.xlsx (Größe: 11,6 KB / Downloads: 10)
Antworten Top
#2
Hi
 
So wie du es dir vorstellst ist das nicht zu machen.
 
Alternativ:
Die Listen Test1; Test2 usw. in einer Hilfsspalte zusammenfassen und diese als Liste für das DropMenü verwenden.
 
Oder eine VBA Lösung, welche ich hier vorziehen würde. Bevor ich dazu aber einen Vorschlag mache, solltest du mitteilen ob VBA in Frage kommt.
 
Gruß Elex
Antworten Top
#3
Hi Elex,

vielen Dank für deine Antwort und Einschätzung. Das hintereinanderschreiben von vier Liste - in der jeweils eine der Listen vorne steht - daran habe ich auch schon getüftelt. Da die Listen jedoch dynamisch sind und auch regelmäßig erweitert bzw gekürzt werden, wird es hakelig.

VBA ist überhaupt kein Problem - die Datei hat bereits Code ... Bevor nun jedoch viel Mühe in VBA gesteckt wird, sollte ich noch beschreiben, wo die Reise letztlich hin soll.

Mein Mappe sieht derzeit so aus, dass ich in einem Tabellenblatt wild verteilt zig Zellen habe (grob geschätzt 90) in denen dann per Datenüberprüfung eine Eintragung erfolgen soll. Die Liste, aus der sich die Datenüberprüfung zusammensetzt soll nun in einem extra Tabellenblatt stehen. Diese Liste soll aus den vier dynamischen Tabellen bestehen, wobei eine Tabelle optimalerweise vorangestellt werden soll.

Als zweiter und in meinen Augen noch wichtigerer Wunsch wäre eine Suchfunktion. Bei Eingabe der ersten Buchstaben, soll der Dropdown entsprechend eingegrenzt werden. So wie hier beschrieben:
https://www.youtube.com/watch?v=AcQHleyCtB8

Problem hier ist, dass ich nicht 1 Suchfeld habe, sondern 90 ... und die zusammenhängende Liste aus den vier Listen habe ich damit immer noch nicht :(


Anbei noch ein Mal der Aufbau skizziert


Angehängte Dateien
.xlsx   Spalten.xlsx (Größe: 12,56 KB / Downloads: 4)
Antworten Top
#4
Hi,

hier mein Versuch.

.xlsm   Ausfüllhilfe 2.xlsm (Größe: 28,14 KB / Downloads: 11)
Antworten Top
#5
Hi Elex,

arbeitsbedingt melde ich mich jetzt erst - habe deine Variante nun in Augenschein nehmen können. Vielen Dank für deine Mühe!!!! Eine Userform mit einem Array einzubauen, daran habe ich gar nicht gedacht.
Leider ist das Ergebnis nicht so ganz, wie ich mir das vorstelle. Ich hatte gehofft, dass ich einfach in die Zelle schreiben kann, und er dann das Dropdownmenü entsprechend anpasst.

Problem ist zudem, dass er immer Bezug auf die Zeile 1 der Spalte nimmt. Allerdings befindet sich der Listenname auch mal in Zeile 15 bspw und die 10 Zeilen darunter sollen dann befüllt werden. Ich denke, dass ich Abstand davon nehme, dass die Liste1 als Erstes genannt werden soll, wenn im Kopf auch "Liste1" steht.

Habe mich auch an eine Formellösung probiert ... Das untereinanderschreiben der einzelnen Listen habe ich folgendermaßen lösen wollen:

=WENN(ANZAHL2(Tabelle1!A$1:A$1000)>=ZEILE(A1);Tabelle1!A1;INDEX(Tabelle2!A$1:A$1000;ZEILE(A1)-ANZAHL2(Tabelle1!A$1:A$1000)))

Allerdings wird es aber der dritten dynamischen Tabelle, die ich anfüge, schon wieder schwierig. Ich verzweifle echt gerade ....


Das nächste Problem, was mich bei der Formellösung ereilen wird, dass die Suchfunktion in den vielen Zeilen nach meinem jetzigen Stand nicht möglich ist?!



Gruß
Antworten Top
#6
Hi

Zitat:Leider ist das Ergebnis nicht so ganz, wie ich mir das vorstelle. Ich hatte gehofft, dass ich einfach in die Zelle schreiben kann, und er dann das Dropdownmenü entsprechend anpasst.
Also ist der einzige Unterschied zu deinem Wunsch und meinem Vorschlag dass nach dem Anklicken der gewünschten Zelle die Eingabe in der Textbox erfolgt.
Das ist für mich etwa so als wenn es wichtig ist im Stadion mit 30000 Plätzen auf Platz 1520 zu sitzen und auf keinem Fall auf 1521.
 
Problem 2 sollte der Code lösen.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim k, t As Variant
Dim Zeile As Long
Dim n As Range

Überschrift = ""
For Each k In Sheets("Tabelle1").ListObjects
   Set n = Range(Cells(1, Target.Column), Cells(Target.Row, Target.Column)).Find(What:=k.HeaderRowRange(1).Value, LookAt:=xlWhole, SearchDirection:=xlPrevious)
   If Not n Is Nothing Then
     If Zeile < n.Row Then
        Überschrift = n.Value
        Zeile = n.Row
     End If
   End If
Next k

If Überschrift <> "" Then
  Call Liste
  UserForm1.Show
  Cancel = True
End If

End Sub

Gruß Elex
Antworten Top
#7
Hey Elex,

das sollte überhaupt nicht böse von mir sein ... ich habe höchsten Respekt vor den Helfern hier im Forum und ich Danke dir.

Wenn ich das so überblicke sucht er immer nach oben nach der nächsten gültigen Überschrift bzw dem Listennamen ... richtig? Das sieht schon wesentlich besser aus :) - DANKE!
Antworten Top
#8
Hi @EasY

Ich hatte das auch nicht als Kritik oder gar böse verstanden, nur als etwas unflexibel.
 
Die zwei Möglichkeiten wie ein Ergebnis in der Zelle erscheint hast du erkannt?
Doppelklick auf Textbox übernimmt Inhalt der Textbox.
Klick in die Liste übernimmt den Listeneintrag.
 
Der neue Code hast du richtig analysiert. (nur gültige Überschrift, aber nicht Tabellenname/Listenname)

Bis dahin
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • EasY
Antworten Top
#9
Oder


Code:
Private Sub UserForm_Initialize()
  With Tabelle1.UsedRange
    .SpecialCells(4) = "~"
    .Offset(1).Resize(.Rows.Count).Copy
  end with

 With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    .GetFromClipboard
    ListBox1.List = Filter(Split(Replace(.GetText, vbCrLf, vbTab), vbTab), "~", 0)
  End With
End Sub

Private Sub ListBox1_Change()
   If ListBox1.ListIndex > -1 Then ActiveCell.Value = ListBox1.Value
   Hide
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#10
Hi snb,

magst du mir kurz erläutern, was der Code macht? Habe den Code in die Userform kopiert und den alten initialize-Bereich rausgelöscht. Erkenne aber so adhoc nicht, was der Code macht...



Gruß
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste