VBA-Programmierung in Microsoft Excel

Tutorial: Die Dialoge

Farbdialog generieren und löschen

Es wird ein Farbauswahl-Dialog generiert und nach Aufruf wieder gelöscht. Es handelt sich bei dem Dialog um ein DialogSheet, keine UserForm.

Download Beispiel-Arbeitsmappe
ColorPicker
  • Prozedur: ColorPicker
  • Art: Sub
  • Modul: Standardmodul
  • Zweck: Farbdialog generieren
  • Ablaufbeschreibung:
    • Variablendeklaration
    • Bildschirmaktualisierung ausschalten
    • Neues DialogSheet erstellund und an Objektvariable übergeben
    • Rahmen zum DialogSheet bilden
    • Namen des DialogSheets festlegen
    • Rahmen zum Dialog-Rahmen bilden
    • Eigenschaften des rahmens festlegen
    • Zählvariable für den linken Rand initialisieren
    • Zählvariable für den oberen Rand initialisieren
    • Optionsfeld hinzufügen und an eine Objektvariable übergeben
    • Aufschrift des Optionsfeldes festlegen
    • Wert des Optionsfeldes festlegen
    • Zweites Optionsfeld hinzufügen und an eine Objektvariable übergeben
    • Aufschrift des Optionsfeldes festlegen
    • Zählvariable für den oberen Rand hochzählen
    • Eine Schleife über 7 Spalten bilden
    • Zählvariable für den linken Rand hochzählen
    • Eine Schleife über 8 Zeilen bilden
    • Zählvariable für den oberen Rand hochzählen
    • Zählvariable für die Farbkästchen-Elemente hochzählen
    • TextBox hinzufügen und an eine Objektvariable übergeben
    • Eigenschaften der TextBox festlegen
    • Zählvariable für den oberen Rand hochzählen
    • OK-Schaltfläche hinzufügen
    • Abbrechen-Schaltfläche hinzufügen
    • Eigenschaften der OK-Schaltfläche festlegen
    • Eigenschaften der Abbrechen-Schaltfläche festlegen
    • Dialog anzeigen
    • Warnmeldungen ausschlaten
    • DialogSheet löschen
    • Warnmeldungen einschalten
  • Code:

    Sub ColorPicker()
      Dim dlgFarben As DialogSheet
      Dim btnOK As Button, btnCancel As Button
      Dim optInterior As OptionButton, optFont As OptionButton
      Dim txtClr As TextBox
      Dim intRow As Integer, intCol As Integer
      Dim l As Integer, t As Integer, intClr As Integer
      Application.ScreenUpdating = False
      Set dlgFarben = DialogSheets.Add
      With dlgFarben
        .Name = "dlgFarben"
        With .DialogFrame
          .Top = 0
          .Left = 0
          .Height = 200
          .Width = 170
          .Caption = "Color Picker"
        End With
        l = 15
        t = 15
        Set optInterior = .OptionButtons.Add(l, t, 75, 15)
        optInterior.Caption = "Zellhintergrund"
        optInterior.Value = xlOn
        Set optFont = .OptionButtons.Add(l + 75, t, 75, 15)
        optFont.Caption = "Schriftfarbe"
        t = t + 20
        For intRow = 1 To 7
          l = 15
          For intCol = 1 To 8
            intClr = intClr + 1
            Set txtClr = .TextBoxes.Add(l, t, 16, 16)
            With txtClr
              .Interior.ColorIndex = intClr
              .OnAction = "FarbAuswahl"
              .Name = "clr" & intClr
            End With
            l = l + 18
          Next intCol
          t = t + 18
        Next intRow
        Set btnOK = .Buttons(1)
        Set btnCancel = .Buttons(2)
        btnOK.Top = 180
        btnOK.Left = 25
        btnCancel.Top = 180
        btnCancel.Left = 100
        .Show
        Application.DisplayAlerts = False
        .Delete
        Application.DisplayAlerts = True
      End With
    End Sub
    


  • Prozedur: FarbAuswahl, den TextBoxes zugewiesen
  • Art: Sub
  • Modul: Standardmodul
  • Zweck: Bei Auswahl einer TextBox die Hintergrundfarbe dieser TextBox als Zellhintergrund- oder Schriftfarbe festlegen
  • Ablaufbeschreibung:
    • Variablendeklaration
    • Den Focus auf das aufrufende Blatt setzen
    • Bildschirmaktualisierung einschalten
    • Den Namen der aufrufenden TextBox an eine String-Variable übergeben
    • Wenn das Optionsfeld für die Hintergrundfarbe aktiviert ist...
    • Zell-Hintergrundfarbe festlegen
    • Sonst...
    • Schriftfarbe festlegen
  • Code:

    Sub FarbAuswahl()
      Dim strAc As String
      Worksheets("DialogSheet02").Select
      Application.ScreenUpdating = True
      strAc = Application.Caller
      If DialogSheets("dlgFarben").OptionButtons(1).Value = xlOn Then
        Selection.Interior.ColorIndex = CInt(Right(strAc, Len(strAc) - 3))
      Else
        Selection.Font.ColorIndex = CInt(Right(strAc, Len(strAc) - 3))
      End If
    End Sub