Thema Datum  Von Nutzer Rating
Antwort
07.09.2019 20:36:07 Maia
Solved
07.09.2019 21:03:05 Gast50424
Solved
08.09.2019 00:54:59 Gast87449
Solved
Blau Dynamisches Dropdown entwerfen
08.09.2019 08:43:28 Gast50424
****
Solved
08.09.2019 12:20:54 Gast74518
Solved
08.09.2019 22:31:42 Gast50424
Solved

Ansicht des Beitrags:
Von:
Gast50424
Datum:
08.09.2019 08:43:28
Views:
586
Rating: Antwort:
 Nein
Thema:
Dynamisches Dropdown entwerfen

Also grundlegend gibt es zwei Möglichkeiten Einträge in ein Kombinationsfeld (ComboBox) einzutragen.

  1. mittels der RowSource-Eigenschaft
  2. ODER mittels der List-Eigenschaft (bzw. per AddItem-Methode)

Beides zusammen funktioniert nicht.

 

Nun weiß ich nicht in wie weit es Sinn macht, Listen mit Straßennamen auf mehreren Tabellen zu führen, das wirkt auf mich redundant.

Wenn sich die UserForm zuvor getätigte Einträge merken soll, dann musst du diese irgendwo zwischenspeichern. Das geht entweder auf einem (versteckten) Tabellenblatt, oder innerhalb/außerhalb der Userform. Letzteres bleibt solange erhalten, wie die Mappe geöffnet bleibt und keine Laufzeitfehler auftreten.

 

-> Auf dem aktuell sichtbaren Tabellenblatt "merken":

Option Explicit

'Standardbereich
Private Const C_BEREICH_COMBOBOX1 As String = "P11"

Private Sub CommandButton1_Click()
  
  Dim strValue As String
  Dim i As Long
  
  strValue = Trim$(ComboBox1.Value)
  
  If strValue <> "" Then
    For i = 0 To ComboBox1.ListCount - 1
      If 0 = StrComp(ComboBox1.List(i), strValue, vbTextCompare) Then
      '-> Eintrag existiert bereits
        Exit Sub
      End If
    Next
  End If
  
  'neuer Eintrag im Tabellenblatt (dies erweitert den festgelegten Standardbereich)
  With Range(Range(C_BEREICH_COMBOBOX1).Cells(1), Cells(Rows.Count, Range(C_BEREICH_COMBOBOX1).Cells(1).Column).End(xlUp))
    .Resize(1).Offset(.Rows.Count).Value = strValue
  End With
  
  'neuen Eintrag auch in der UserForm hinzufügen
  ComboBox1.AddItem strValue
  
End Sub

Private Sub UserForm_Initialize()
  
  Dim rngCell As Excel.Range
  
  'Standardbereich, inkl. hinzugefügte Einträge
  With Range(Range(C_BEREICH_COMBOBOX1).Cells(1), Cells(Rows.Count, Range(C_BEREICH_COMBOBOX1).Cells(1).Column).End(xlUp))
    For Each rngCell In .Cells
      ComboBox1.AddItem Trim$(rngCell.Value)
    Next
  End With
  
End Sub

 

-> Oder, neue Einträge in der UserForm merken:

!! Die UserForm darf in diesem Fall nicht entladen werden !!

Das heißt man darf sie nur verstecken, mit:

Me.Hide()

Sobald sie entladen wird, gehen die "gemerkten" Einträge verloren (das passiert auch, wenn Laufzeitfehler auftreten).

Option Explicit

Private m_colEintrage As VBA.Collection

'Standardbereich
Private Const C_BEREICH_COMBOBOX1 As String = "P11"

Private Sub CommandButton1_Click()
  
  Dim strValue As String
  Dim i As Long
  
  strValue = Trim$(ComboBox1.Value)
  
  If strValue <> "" Then
    For i = 0 To ComboBox1.ListCount - 1
      If 0 = StrComp(ComboBox1.List(i), strValue, vbTextCompare) Then
      '-> Eintrag existiert bereits
        Exit Sub
      End If
    Next
  End If
  
  'neuen Eintrag in der UserForm merken
  m_colEintrage.Add strValue
  
  'neuen Eintrag auch in der UserForm hinzufügen
  ComboBox1.AddItem strValue
  
End Sub

Private Sub UserForm_Initialize()
  
  Set m_colEintrage = New VBA.Collection
  
  Dim rngCell As Excel.Range
  
  'Standardbereich
  For Each rngCell In Range(C_BEREICH_COMBOBOX1).Cells
    ComboBox1.AddItem Trim$(rngCell.Value)
  Next
  
End Sub

Die dritte Möglichkeit, wäre sich die Einträge auf einem extra erstellten Tabellenblatt zu merken, welches man versteckt. Das wäre dann ähnlich der ersten Variante, nur mit einem anderen Tabellenblatt als Ziel.

 

Viele Grüße


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
07.09.2019 20:36:07 Maia
Solved
07.09.2019 21:03:05 Gast50424
Solved
08.09.2019 00:54:59 Gast87449
Solved
Blau Dynamisches Dropdown entwerfen
08.09.2019 08:43:28 Gast50424
****
Solved
08.09.2019 12:20:54 Gast74518
Solved
08.09.2019 22:31:42 Gast50424
Solved