Office: (Office 2019) Klassenmodul.Eigenschaften

Helfe beim Thema Klassenmodul.Eigenschaften in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Moin allerseits, als erste Versuche in der Klassenprogrammierung habe ich mir zwei Controls gebastelt, die in einer Userform anhand ihrer Caption und... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von d'r Bastler, 9. März 2023.

  1. d'r Bastler
    d'r Bastler hat Ahnung

    Klassenmodul.Eigenschaften


    Moin allerseits,

    als erste Versuche in der Klassenprogrammierung habe ich mir zwei Controls gebastelt, die in einer Userform anhand ihrer Caption und Select Case verschiedene Prozeduren auslösen. Aktiv sind das CommandButtons, die dann in Textboxen schreiben bzw. diese formatieren. Das funktioniert schon wunderbar.

    Width, Height, Top, Left usw. kann ich darüber erfolgreich definieren. Was mir nicht gelingen will, sind den CommandButtons ControlToolTips hinzuzufügen. Die cmds sind nur mit einer Abkürzung beschriftet, die ich per MouseOver gerne auflösen würde.

    Anmerkung: Ich habe diese Frage auch in einem anderen Forum gestellt, bin hier also mit einem CrossPosting (igittigitt!). Man möge mir bitte verzeihen, denn auch nach drei Tagen habe ich dort leider keine Antwort erhalten.

    Freue mich über jede Idee. Lieben Dank!

    d'r Bastler
     
    d'r Bastler, 9. März 2023
    #1
  2. d'r Bastler
    d'r Bastler hat Ahnung
    Na dann versuche ich mal mit der Vorstellung meines Codes. Vielleicht erleichtert das die Sache ein wenig.

    Als Userform nehme ich eine VBA-Standardform, in deren Eigenschaften ich lediglich den Namen geändert habe: usfMain.
    Alle darin enthaltenen TextBoxen und CommandButtons werden anhand zweier Tabellen dynamisch erzeugt. Hier der wesentliche Code:

    Code:
    Option Explicit
    Dim btnCollection As New Collection
    Dim tbxCollection As New Collection
    
    Private Sub UserForm_Initialize()
    System
    Dim ctr As Control
    Dim btnClass As clsButton, cmd As MSForms.CommandButton
    Dim tbxClass As clsTextbox, tbx As MSForms.TextBox
    
    Dim i As Integer, iDist As Integer, iTop As Integer, iLine As Integer, iRGB As Integer
    Dim iLen As Integer, iCat As Integer
    Dim sCat As String, sCap As String
    
    iLen = WorksheetFunction.Max(wsW.Columns(6))
    iCat = WorksheetFunction.CountA(wsK.Columns(1))
    
    'usfDimensionen
    Height = 200
    Width = iCat * 30 + 78      'bestimmt die flexible Breite der USF in
    Caption = "Dynamisch erzeugte UserForm"
    
    'Anzahl, Größe und Position der cmd mit Caption
    For i = 1 To iCat
    sCat = wsK.Cells(i, 2)
    Set cmd = Me.Controls.Add("Forms.CommandButton.1", "cmd" & sCat, True)
        sCat = wsK.Cells(i, 2)
       
        With cmd
            .Height = 20
            .Top = 10
            .Left = 30 * i
            .Width = 28
            .Caption = sCat
            .Enabled = True
        End With
       
        Set btnClass = New clsButton
        Set btnClass.cButton = cmd
        btnCollection.Add btnClass
    Next i
    
    ' lblCatLong
    Set ctr = Me.Controls.Add("Forms.Label.1", "lblCatLong", True)
    With ctr
        .Height = 20
        .Width = Me.Width * 0.8
        .Top = 40
        .Left = Me.Width * 0.1
        .TextAlign = fmTextAlignCenter
        .Caption = "Bitte eine Kategorie wählen"
    End With
    In den Klassenmodulen ist eine clsButton definiert, die auf eine Prozedur Categories in einem allg. Modul verweist.

    Code:
    Option Explicit
    
    Public WithEvents cButton As MSForms.CommandButton
    
    Private Sub cButton_Click()
       
        Application.Run "Categorie", cButton.Caption
    
    End Sub
    Als Parameter und zur Entscheidung, welche Prozedur in der Sub Categories ausgeführt werden soll, wird die Caption des Buttons mitgegeben. >> Funktioniert soweit bestens.

    Z.B. kann ich so mit dem Click-Event ein Label mit der vollständigen Beschriftung anzeigen lassen. Nachdem dieser Event aber auch noch andere Folgen hat, möchte ich dem Benutzer vor dem Click die Auflösung der Abkürzung als ToolTipp zeigen.

    Im Allgemeinen Modul sieht der Code so aus:
    Code:
    Sub Categorie(sCat As String)
    System
    Dim i As Integer, a As Integer, r As Integer, rC As Integer, iRand As Integer, iLenMax As Integer
    Dim sVal As String, sWord As String, sCatLong As String, sCtr As String
    Dim ctr As Control
    
    ' Andere Buttons?
    For i = 0 To UBound(aCMD)
        If sCat = aCMD(i) Then
            Application.Run "Characters", sCat
            Exit Sub
        End If
    Next i
    
    ' KategorienZaehler
    r = wsW.UsedRange.Rows.Count
    
    With wsW
        For i = 1 To r
            sVal = .Cells(i, 2)
            If sVal = sCat Then
                a = a + 1
            End If
        Next i
    
    'Kategorie extrahieren
        wsC.Cells.Clear
        rC = wsC.UsedRange.Rows.Count
            For i = 1 To r
                sVal = .Cells(i, 2)
                If sVal = sCat Then
                    wsC.Cells(rC, 1) = .Cells(i, 1)
                    rC = rC + 1
                End If
            Next i
    End With
    Der Code geht natürlich noch eine Weile weiter (für hier aber irrelevant), aber vielleicht hilft das bisher gezeigte zu einer Lösung mit dem ControlToolTip.

    Besten Dank und schönen Abend noch!
     
    d'r Bastler, 11. März 2023
    #2
  3. d'r Bastler
    d'r Bastler hat Ahnung
    Yaeh man yeah!! Konnte es selber lösen.
     
    d'r Bastler, 12. März 2023
    #3
Thema:

Klassenmodul.Eigenschaften

Die Seite wird geladen...
  1. Klassenmodul.Eigenschaften - Similar Threads - Klassenmodul Eigenschaften

  2. VBA Formular rechnet nicht

    in Microsoft Excel Hilfe
    VBA Formular rechnet nicht: Hallo zusammen, ich habe ein Problem mit der angehängten Datei. Diese besteht aus: Der Tabelle1 in welcher sich ein CommandButton befindet, der nichts weiter tut, als die UserForm zu öffnen....
  3. doppelte und gezielte Eigenschaftsvergabe für einzelne Orten innerhalb eines Kartendiagramm

    in Microsoft Excel Hilfe
    doppelte und gezielte Eigenschaftsvergabe für einzelne Orten innerhalb eines Kartendiagramm: Moin. Anlass meiner Frage: Ich habe via Excel365 ein gewöhnliches Kartendiagramm mit Datenschnitten erstellt (s. Screenshots). Frage: Wie kriege ich es in der Formatierung des Diagramms hin,...
  4. Ordner Eigenschaften

    in Microsoft Outlook Hilfe
    Ordner Eigenschaften: gibt es eine Möglichkeit, die Anzahl der ungelesenen oder gelesenen E-Mails mit nur einem Klick auch für alle Unterordner zu generieren?
  5. Ausgabe mehrerer Produkte mit den selben Eigenschaften

    in Microsoft Excel Hilfe
    Ausgabe mehrerer Produkte mit den selben Eigenschaften: Sehr geehrte Damen und Herren, ich möchte mit einer Dropdown-Liste Produkteigenschaften auswählen und mir soll dann alle Produkte angezeigt werden, die diese Eigenschaft erfüllen. Ich habe die...
  6. Userform Minimieren Maximieren (Klassenmodul)

    in Microsoft Excel Hilfe
    Userform Minimieren Maximieren (Klassenmodul): Excel 2007/2010 (VBA) Hi Leute, ich kenn mich mit Klassenmodule wenig aus und habe daher folgendes Problem. Meine Userform hat neben dem Schließkreuz rechts oben nun auch die Minimeren und...
  7. Excel VBA :: Klassenmodul für Textboxen :: Teil 2 :: Selektion Text

    in Microsoft Excel Hilfe
    Excel VBA :: Klassenmodul für Textboxen :: Teil 2 :: Selektion Text: Bisher erfolgreich mit Hilfe von Beverly/Karin implementiert: Klassenmodul für Textboxen Eigene Routinen für unterschiedliche Textboxen im Formular Sperren von gewissen Zeichen in...
  8. Excel VBA :: Klassenmodul für Textboxen :: Unterschiedliche Operationen je Textbox

    in Microsoft Excel Hilfe
    Excel VBA :: Klassenmodul für Textboxen :: Unterschiedliche Operationen je Textbox: Ich habe ein Formular mit mehr als 20 Textboxen, in die abhängig von der Textbox unterschiedliche Daten eingegeben werden sollen. In einige sollen numerische Daten, in andere Buchstaben (d.h....
Schlagworte:
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden