Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Im Assistenten anzuzeigende Funktion festlegen

Gruppe

Anwendung

Problem

Über UserForm-OptionButtons soll festgelegt werden, welche von 2 Funktionen in der Kategorie Benutzerdefiniert des Funktionsassistenten angezeigt wird.

Lösung
Geben Sie den Ereigniscode in die nachfolgend genannten Module ein.

StandardModule: basMain

Private Sub AddCustomProperties()
   ThisWorkbook.CustomDocumentProperties.Add _
      Name:="Functions", _
      LinkToContent:=False, _
      Type:=msoPropertyTypeBoolean, _
      Value:=True
End Sub

Sub DialogAufruf()
   Dim iRow As Integer
   frmFunctions.Show
   With ThisWorkbook.VBProject.VBComponents("basFunctions").CodeModule
      If ThisWorkbook.CustomDocumentProperties("Functions") = True Then
         iRow = .ProcBodyLine("HoleWert", 0)
         .DeleteLines iRow
         .InsertLines iRow, "Function HoleWert()"
         iRow = .ProcBodyLine("GetValue", 0)
         .DeleteLines iRow
         .InsertLines iRow, "Private Function GetValue()"
      Else
         iRow = .ProcBodyLine("GetValue", 0)
         .DeleteLines iRow
         .InsertLines iRow, "Function GetValue()"
         iRow = .ProcBodyLine("HoleWert", 0)
         .DeleteLines iRow
         .InsertLines iRow, "Private Function HoleWert()"
      End If
   End With
End Sub
ClassModule: frmFunctions

Private Sub cmdCancel_Click()
   Unload Me
   End
End Sub

Private Sub cmdOK_Click()
   ThisWorkbook.CustomDocumentProperties("Functions").Value = _
      OptionButton1.Value
   Unload Me
End Sub
StandardModule: basFunctions

Private Function HoleWert()
   HoleWert = 10
End Function

Function GetValue()
   GetValue = 12
End Function