Thema Datum  Von Nutzer Rating
Antwort
Rot KlassenModul Verfügbarkeit von Eigenschaften
07.04.2017 15:57:52 The_Materialist
NotSolved
07.04.2017 16:22:13 BigBen
NotSolved
07.04.2017 16:25:12 The_Materialist
NotSolved
07.04.2017 16:32:12 Gast73585
NotSolved

Ansicht des Beitrags:
Von:
The_Materialist
Datum:
07.04.2017 15:57:52
Views:
1060
Rating: Antwort:
  Ja
Thema:
KlassenModul Verfügbarkeit von Eigenschaften

Hi,

 

An diejenigen die meine Beiträge diese Woche verfolgt haben, danke für eure Geduld.

 

Es geht um foglendes, jemand in diesem Forum hat mir bei der Lösung eines Problems diese Woche die Idee Klassenmodule für Userforms geziegt. jetzt habe ich ein zweites Problem das ich sehr ähnlich lösen will. Hier die Kurzfassung:

Klasse: FilterLine mit Eigenschaften: Filter, Operator und Options alles sind Comboboxen  Methoden sind: Add, Remove, fillFilter, fillOperator und fillOptions

sollte alles ziemlich selbst redend sein was was macht. Add und Remove sollen in einer Userform alle Buttons + Logo verschieben und eine neue FilterLine erstellen mit den drei Comboboxen und diese positionieren. Remove das umgekehrte: löschen verschieben, verkleinern. Die fillFunktionen sollen diejeweiligen Comboboxen dann mit items versorgen. Jetzt mein Problem:

Option Explicit

Public WithEvents Filter As MSForms.Combobox
Public WithEvents Operator As MSForms.Combobox
Public WithEvents Options As MSForms.Combobox
Public Index As Integer
Public Sub Add()
Dim Filter As MSForms.Combobox, Options As MSForms.Combobox, Operator As MSForms.Combobox

' Move Buttons and increase userforms size
frmFilter.Height = frmFilter.Height + 50
frmFilter.AddFilter.Move Top:=frmFilter.AddFilter.Top + 50
frmFilter.Logo.Top = frmFilter.Logo.Top + 50
frmFilter.RemoveFilter.Top = frmFilter.RemoveFilter.Top + 50
frmFilter.Backbtn.Top = frmFilter.Backbtn.Top + 50
frmFilter.GO_btn.Top = frmFilter.GO_btn.Top + 50

' Add Filter, Operator and Options
' Filter
Set Filter = frmFilter.Controls.Add("Forms.ComboBox.1", "Filter" & (Index), True)
With Filter.Font
      .name = "Arial"
      .Size = 16
      .Bold = True
End With

Filter.Top = frmFilter.DefaultFilter.Top + 50 * (Index)
Filter.Left = frmFilter.DefaultFilter.Left
Filter.Width = frmFilter.DefaultFilter.Width
Filter.Height = frmFilter.DefaultFilter.Height

'Operator
Set Operator = frmFilter.Controls.Add("Forms.ComboBox.1", "Operator" & Index, True)

With Operator.Font
      .name = "Arial"
      .Size = 16
      .Bold = True
End With

Operator.Top = frmFilter.DefaultOperator.Top + 50 * (Index)
Operator.Left = frmFilter.DefaultOperator.Left
Operator.Width = frmFilter.DefaultOperator.Width
Operator.Height = frmFilter.DefaultOperator.Height

'Options
Set Options = frmFilter.Controls.Add("Forms.ComboBox.1", "Options" & Index, True)

With Options.Font
      .name = "Arial"
      .Size = 16
      .Bold = True
End With

Options.Top = frmFilter.DefaultOptions.Top + 50 * (Index)
Options.Left = frmFilter.DefaultOptions.Left
Options.Width = frmFilter.DefaultOptions.Width
Options.Height = frmFilter.DefaultOptions.Height

Call fillOperator
Call fillOptions
Index = Index + 1

frmFilter.RemoveFilter.Enabled = True
End Sub
Public Sub Remove()
Index = Index - 1
frmFilter.Controls.Remove ("Filter" & Index)
frmFilter.Controls.Remove ("Options" & Index)
frmFilter.Controls.Remove ("Operator" & Index)

frmFilter.Height = frmFilter.Height - 50
frmFilter.Logo.Top = frmFilter.Logo.Top - 50
frmFilter.Backbtn.Top = frmFilter.Backbtn.Top - 50
frmFilter.GO_btn.Top = frmFilter.GO_btn.Top - 50

frmFilter.RemoveFilter.Top = frmFilter.RemoveFilter.Top - 50
frmFilter.AddFilter.Top = frmFilter.AddFilter.Top - 50
If Index = 1 Then
      frmFilter.RemoveFilter.Enabled = False
End If
End Sub
Public Sub fillFilter()
Debug.Print "Here Filter: " & Filter.name & " will be filled."
End Sub
Private Sub fillOperator()
Debug.Print "Here Operator: " & Operator.name & " will be filled."
End Sub
Private Sub fillOptions()
Debug.Print "Here Options: " & Options.name & " will be filled."
End Sub

Wenn ich in der Funktion .Add die fillOperator oder fillOptions Funktion aufrufe, dann sind im Aufruf der Funktion die Eigenschaften Nothing also z.b wären debug.print Option.name  in der sub filloptions gibt ein Fehler, da das Objekt nicht verfügbar ist. Ich dachte innerhalb des Klassenmoduls kann ich alle Public Eigenschaften per Namen ansprechen. Wo ist mein Fehler? Ich reiss mir die Haare aus..

 

Grüsse


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot KlassenModul Verfügbarkeit von Eigenschaften
07.04.2017 15:57:52 The_Materialist
NotSolved
07.04.2017 16:22:13 BigBen
NotSolved
07.04.2017 16:25:12 The_Materialist
NotSolved
07.04.2017 16:32:12 Gast73585
NotSolved