Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Suchfunktion in Dropdownfeld
#21
Ich mische mich noch einmal ein:
So wie Dir geht es etlichen MS-Kunden.
Die MS-Programmierer hätten es locker in der Hand, Google-Sheets zu imitieren.
Schließlich kommen die mittlerweile auch drauf, dass Funktionen wie FILTER() und EINDEUTIG() großen Nutzen bieten.
(gut, für ein simples SPLIT() reicht es immer noch nicht)

Ich glaube tatsächlich, dass es die Redmonder erst wirklich merken, wenn es zu spät ist.

Ist aber nur meine (exklusive?) Meinung.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • dreckfrosch
Top
#22
Danke auch für diesen Hinweis, es bestätigt mich doch etwas in meiner Sicht der Dinge. Sicherlich sind Programmierkenntnisse immer von Vorteil und ab einer gewissen Funktionstiefe auch zwingend erforderlich. Und doch gibt es zahlreiche Beispiele, bei denen es gelingt, auch komplizierte Prozesse mit rudimentären Kenntnissen umzusetzen.

Leider bin ich beruflich an Excel gebunden und werde nun doch klassisch die Daten mit copy&paste eintragen. 

Und da es hier viel zu selten zum Ausdruck kommt, nochmal ein herzliches Dankeschön an alle. Ich bin immer wieder begeistert, dass hier so viele "fremde" Menschen sich intensiv um die Probleme anderer kümmern!

Liebe Grüße und bis zum (sicherlich!) nächsten Mal! Wink

Timo
Top
#23
Hallo,

eine Beispieldatei stelle ich auch ein.

Zum Nachbauen musst Du eine ComboBox aus den Active-X Steuerelementen in die Tabelle einfügen, in der Du Dein DropDown haben möchtest.
Die ComboBox kann in der Tabelle willkürlich platziert sein. Die richtige Platzierung macht der Code.

Dann muss Code in folgende Module eingefügt werden.

DieseArbeitsmappe
und in das Modul der Tabelle mit der ComboBox

Einfach aus den entsprechen Stellen der eingestellten Beispieldatei heraus kopieren und einfügen.
Damit das Funktioniert entweder die Datei speichern schließen und wieder öffnen oder einmal eine andere Tabelle aktivieren und dann wieder die Tabelle mit der Combobox aktivieren.

Ich habe ein weiteres Blatt eingefügt, in der befinden sich wenige Angaben, die der Code braucht. Die sind so, wie dort beschrieben anpassbar.

Und hier zum Testen die Beispieldatei:

.xlsm   Dropdown Datengültigkeit mit ComboBox_Ati_1.xlsm (Größe: 331,51 KB / Downloads: 21)

Es kann sein, dass noch kleine Dinge nachgebessert werden müssen.
Wenn's gefällt und es sollen Dinge angepasst oder Fehler beseitigt werden, dann melde Dich.
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • dreckfrosch
Top
#24
Mega! Das habe ich hinbekommen und es funktioniert auch in meiner "echten" Tabelle. Vielen Dank dafür!

Kannst Du mir noch etwas basteln oder den Code so verändern, dass die Comboboxes auch in einem Tabellenblatt in zwei verschiedenen Spalten nutzbar sind? Sie sollen auf die gleiche Datenbasis zugreifen, ich brauche aber eine Übersicht in der Erst- und Zweitbesetzung für eine Funktion nebeneinander stehen.

Gruß
Top
#25
Hallo Timo,

das geht auch.

Folgende Anpassungen musst Du machen:
In Tabelle Parameter unten einen neuen Eintrag:


Zelle A7: Dropdownbereich2
Zelle BT: Bereichsadresse (z.B.: H1:O1)


Dann muss der Code geändert werden. Ich habe noch eine kleinigkeit mehr geändert, deswegen unten stehenden Code im der Tabelle statt des bisherigen:
Nicht alles Code sondern ganz unten ab hier :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

   Dim varWert As Variant
   Dim wksDaten As Worksheet
   Dim rngDropBereich
   Dim rngBereich1 As Range
   Dim rngBereich2 As Range
  
   Set wksDaten = Worksheets(Sheets("Parameter").Range("B2").Value)
   Set rngBereich1 = Range(Sheets("Parameter").Range("B6").Value)
   Set rngBereich2 = Range(Sheets("Parameter").Range("B7").Value)
   Set rngDropBereich = Union(rngBereich1, rngBereich2)
  
   If Target.Count = 1 Then
      If Not Intersect(Target, rngDropBereich) Is Nothing Then
         strgWert = Target
         If boVar = False Then
            With ComboBox1
               boVar = True
               .LinkedCell = Target.Address
               .Height = Target.Height
               .Width = Target.Width
               .Left = Target.Left
               .Top = Target.Top
               .Text = Target
               .Visible = True
               .Activate
            End With
         End If
      Else
         ComboBox1.Visible = False
      End If
   End If
   varWert = Application.Match(Range(ComboBox1.LinkedCell), wksDaten.ListObjects(Sheets("Parameter").Range("B3").Value).ListColumns(Sheets("Parameter").Range("B4").Value).DataBodyRange, 0)
   If Not IsNumeric(varWert) And Range(ComboBox1.LinkedCell) <> "" Then
      MsgBox "Es können nur Namen aus der liste eingetragen werden"
      On Error GoTo fehler
      Range(ComboBox1.LinkedCell) = strgWert
      Range(ComboBox1.LinkedCell).Select
      Application.EnableEvents = False
   End If
fehler:
   Application.EnableEvents = True
   boVar = False
  
End Sub

Außerdem im allgemeinen Modul in der Prozedur "Sub cbb" als letzte Zeile,vor End Sub, diese Zeile hinzufügen:
Code:
Sheets("Funktionsblatt").ComboBox1.LinkedCell = Range(Sheets("Parameter").Range("B6").Value).Cells(1, 1).Address
Diese Zeile hilft, wenn die Box mal spinnen sollte. Dann einfach mal eine andere Tabelle aktivieren und wieder zurück gehen.

Unten eine neue Beispieldatei:

.xlsm   Dropdown Datengültigkeit mit ComboBox_Ati_2.xlsm (Größe: 334,64 KB / Downloads: 9)
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • dreckfrosch
Top
#26
Funktioniert! Ich glaube mit dieser Lösung kann ich arbeiten!!! Die Möglichkeit, nicht in den Code reingehen zu müssen, sondern über die Paramter-Tabelle ist für mich genau richtig! Vielen Dank!
Top
#27
Hallo Fröschle,

und Du wolltest aufgeben ....

Liebe Grüße
Marcus

Wissen ist Macht - es ist aber nicht schlimm nicht alles zu wissen.
Man muss nicht alles wissen - man muss nur wissen wo es steht, oder wo man Hilfe bekommt.
Top
#28
absolut....danke für's hartnäckig bleiben!

Ich habe mir das aus Interesse mal bei Google Sheets angeschaut....es bleibt erschreckend, dass es da tatsächlich super einfach geht!  :20:
Top
#29
Wenn ich in der Tabelle arbeite ist der "rückgängig" - Button nicht verfügbar, kann man das noch ändern?
Top
#30
Hi,

das ist nicht mehr möglich. Sobald VBA im Spiel ist, gibt es kein rückgängig mehr.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • dreckfrosch
Top


Gehe zu:


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