Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Bereichsnamen in UserForm-ListBox auflisten und editieren

Gruppe

ListBox

Problem

Wie kann ich alle Bereichsnamen einer Arbeitsmappe in einer UserForm-ListBox auflisten und ändern?

Lösung
Geben Sie den nachfolgenden Code in das Klassenmodul der UserForm ein.

ClassModule: frmNamen

Private Sub cmdEditieren_Click()
  Dim sTxt As String
  If txtOrtAktuell.Text = "" Then
    Beep
    MsgBox "Sie müssen zuerst eine Zeile mit Doppelklick auswählen!"
    Exit Sub
  End If
  With txtOrtAktuell
    sTxt = Right(.Text, Len(.Text) - InStr(.Text, "!"))
    sTxt = Range(sTxt).Address
    .Text = Left(.Text, InStr(.Text, "!")) & sTxt
  End With
  With lstNamen
    ActiveWorkbook.Names(.ListIndex + 1).RefersTo = txtOrtAktuell.Text
    ActiveWorkbook.Names(.ListIndex + 1).Name = txtNameAktuell.Text
    .List(.ListIndex, 0) = txtOrtAktuell
    .List(.ListIndex, 1) = txtNameAktuell
  End With
End Sub

Private Sub cmdWeiter_Click()
  Unload Me
End Sub

Private Sub lstNamen_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  With lstNamen
    txtOrtAktuell.Text = .List(.ListIndex, 0)
    txtNameAktuell.Text = .List(.ListIndex, 1)
  End With
End Sub

Private Sub UserForm_Initialize()
  Dim nme As Name
  Dim arr()
  Dim iRow As Integer
  ReDim arr(0 To 1, 0)
  For Each nme In ActiveWorkbook.Names
    ReDim Preserve arr(0 To 1, iRow)
    arr(0, iRow) = nme
    arr(1, iRow) = nme.Name
    iRow = iRow + 1
  Next nme
  lstNamen.Column = arr
End Sub

StandardModule: basMain

Sub CallForm()
   frmNamen.Show
End Sub