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

Liste per Makro erweitern

Liste per Makro erweitern
27.10.2008 14:35:44
adrian
Hi Leute,
brauche dringend Hilfe...
Will über ein dropdown eine Liste aktualisieren und dort auch eine Auswahl über die in der Liste enthalten Werte haben.
Namen für die dynamische Liste habe ich benannt und auch die fehlermeldung ausgeschaltet!
dazu habe ich folgendes Makro mit Hilfe des Excel Profibuchs geschrieben aber es will nicht funzen =(
obwohl der compiler nicht mehr meckert....

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
Dim valRange As Range
Dim v As Variant
Set valRange = ActiveSheet.Range("D4")
Dim b As Boolean
Dim r As Integer
Dim c As Range
If Target.Address = valRange.Address Then
With valRange
v = Mid(.Validation.Formula1, 2)
End With
For Each c In Range(v).Cells
If c = Target Then
b = True
Exit For
End If
Next
If b = False Then
r = MsgBox(" The value '" & Target & "' is not in the list!", "Do you want to add it?",  _
vbQuestion + vbYesNo, "Extend list with VBA")
If r = vbYes Then
Range("Leerzelle") = Target
Else
If MsgBox("Revoke entry?", vbYesNo) Then
Application.Undo
End If
End If
End If
End If
Application.EnableEvents = True
End Sub


Wäre super wenn mir da einer weiterhelfen kann!
vielen Dank
adrian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Liste per Makro erweitern
27.10.2008 17:40:00
fcs
Hallo Adrian,
wenn ich dich richtig verstanden habe, dann muss du dein Makro etwa wie folgt modifizieren.
Den Sinn des Bereichs "Leerzelle", in den der neue Wert ggf. eingtragen wird, versthe ich in diesem Zusammenhang nicht.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
Dim valRange As Range, rngValidation As Range
Dim v As Variant
Set valRange = ActiveSheet.Range("D4")
Dim b As Boolean
Dim r As Long
Dim c As Range
If Target.Address = valRange.Address Then
With valRange
v = Mid(.Validation.Formula1, 2)
Set rngValidation = Range(v)
End With
For Each c In rngValidation.Cells
If c = Target Then
b = True
Exit For
End If
Next
If b = False Then
r = MsgBox(" The value '" & Target.Value & "' is not in the list!" _
& vbLf & "Do you want to add it?", _
vbQuestion + vbYesNo, "Extend list with VBA")
If r = vbYes Then
With rngValidation
'Neuen Begriff in Zelle unterhalb der Auswahlliste einfügen
.Range("A1").Offset(.Rows.Count, 0).Value = Target
'Bereich für Auswahllisten-Namen neu festlegen (um 1 Zelle nach unten vergrößern)
ThisWorkbook.Names(v).RefersTo = "='" & .Parent.Name & "'!" & _
.Range("a1").Address & ":" & .Range("A1").Offset(.Rows.Count, 0).Address
End With
'Auswahlliste sortieren
Set rngValidation = Range(v)
With rngValidation
.Sort Key1:=.Range("A1"), order1:=xlAscending, Header:=xlNo
End With
Else
If MsgBox("Revoke entry?", vbYesNo) Then
Application.Undo
End If
End If
End If
End If
Application.EnableEvents = True
End Sub


Anzeige
AW: Liste per Makro erweitern
28.10.2008 12:16:55
adrian
vielen dank Franz ;)
hat mir schonmal geholfen...das mit "Leerzelle" stand eben so im Excel Lehrbuch....
hab eine auch eine schönere und elegantere Lösung gefunden, nur gibts da auch noch ein kleines, großes Problem =(
Habe mir folgendes Userform-fenster mit 3 ComboBoxes und jeweils 3 Buttons geschrieben:
Option Explicit

Private Sub UserForm_Activate()
ComboBox1.SetFocus
ComboBox2.SetFocus
ComboBox3.SetFocus
End Sub



Private Sub CommandButton1_Click()
With ComboBox1
.AddItem .Value
.Value = ""
.SetFocus
End With
End Sub



Private Sub CommandButton2_Click()
With ComboBox1
If .ListIndex >= 0 Then
.RemoveItem (.ListIndex)
.Value = ""
End If
End With
End Sub



Private Sub CommandButton3_Click()
ComboBox1.Clear
End Sub



Private Sub CommandButton4_Click()
With ComboBox2
.AddItem .Value
.Value = ""
.SetFocus
End With
End Sub



Private Sub CommandButton5_Click()
With ComboBox2
If .ListIndex >= 0 Then
.RemoveItem (.ListIndex)
.Value = ""
End If
End With
End Sub



Private Sub CommandButton6_Click()
ComboBox2.Clear
End Sub



Private Sub CommandButton7_Click()
With ComboBox3
.AddItem .Value
.Value = ""
.SetFocus
End With
End Sub



Private Sub CommandButton8_Click()
With ComboBox3
If .ListIndex >= 0 Then
.RemoveItem (.ListIndex)
.Value = ""
End If
End With
End Sub



Private Sub CommandButton9_Click()
ComboBox3.Clear
End Sub



Private Sub UserForm_Initialize()
With Label1
.Font.Bold = True
.TextAlign = fmTextAlignCenter
.BackColor = &HFFC0C0
End With
With Label2
.Font.Bold = True
.TextAlign = fmTextAlignCenter
.BackColor = &HFFC0C0
End With
With Label3
.Font.Bold = True
.TextAlign = fmTextAlignCenter
.BackColor = &HFFC0C0
End With
End Sub


Funktioniert auch alles, ABER es speichert die Daten nicht ab & schon gar nicht für jedes einzelne Sheet spezifisch.
Brauch da wahrscheinlich so eine dynamische Liste wie oben, nur weiß ich nicht wie ich das implementiere bzw. miteinander verknüpfe!
Wäre suber wenn das noch irgendwie klappt =)
lg
Adrian

Anzeige
AW: Liste per Makro erweitern
28.10.2008 18:01:00
fcs
Hallo Adrian,
Daten die innerhalb eines Userform generiert werden bleiben nur solange erhalten, bis das Userform aus dem Speicher geladen wird oder bis die Datei geschlossen wird.
Möchtest du die Daten des Userforms speichern, dann muss du Sie in ein Tabellenblatt schreiben.
Außerdem solltest du ggf. beim Aktivieren des Userforms die schon vorhandenen Daten der Gültigkeitsliste in die Comboboxen laden.
Ich hab mal ein Beispiel erstellt und deinen Code entsprechend ergänzt.
https://www.herber.de/bbs/user/56347.xls
Gruß
Franz
Anzeige
AW: Liste per Makro erweitern
29.10.2008 15:01:00
adrian
vielen, vielen dank!!
funzt subba!
werde je sheet die jeweilige userform einbauen, die alle 3 boxen dann im jeweilgen sheet abspeichert.
wenn das klappt bin ich am ziel =)
lg
adrian

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige