Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
668to672
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
668to672
668to672
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wer kann helfen? Habe leider noch keinen Lösungsan

Wer kann helfen? Habe leider noch keinen Lösungsan
16.09.2005 20:11:04
helmut
Entschuldigt bitte, aber ich habe leider noch keine befriedigende Antwort zu meinem Problem bekommen. Gibt es denn wirklich keine Möglichkeit meine Idee umzusetzen?
Hallo Zusammen,
habe mal wieder ein Problem wo ich absolut nicht weiter komme:
Ich möchte eine Reihe von Objekten in einer Userform über eine Schleife (For ...next) mit den erforderlichen Daten und einstellungen füllen. Dazu habe ich eine Excelliste mit den Spalten: Name des Objektes, Eigenschaft, Zuordnung erstellt. In Spalte 1 finde ich den Namen des Objektes in Userform uf3. Die Eigenschaft ist zum Beispiel Visible. Unter Zuordnung habe ich eine Zelle aus einer weiteren Datentabelle beschrieben z.B. worksheet("datentabelle.cells(a,55)).
Ich möchte nun bei der Aktivierung der Uferform3 diese Schleife durchlaufen lassen in Form wie nachstehend beschrieben:
For textfeld = 131 To 157 'gehe von Zeile 131 bis 157
eigenschaft = ws2.Cells(textfeld, 2) 'z.B. Visible, Top, Left, etc.
zuordnung = ws2.Cells(textfeld, 3) 'Datenzuordnung aus 2.Datentabelle
(z.B. Wert für Top 300)
uf3.Controls(ws2.Cells(textfeld, 1)).eigenschaft= zuordnung
'in der obigen Zeile soll nun das Objekt angesprochen werden, dann die Eigenschaft zugefügt und letzendlich der Wert als Zuordnung aus der 2. Tabelle
zugeteilt werden.
Next textfeld 'dann soll bis zur Zeile 157 so wie oben beschrieben verfahren werden
Ich hatte schon vor 3-4 Wochen ein so ähnliches Problem und da hat mir ein NEPUMUK (vielleicht liest Du ja auch zufällig diese Anfrage von mir) einen Lösungsansatz genannt wie folgt:
controls(cells(22,4).text).hight=120
Dieser Lösungsansatz hat mir auch weitergeholfen und in der anderen Anwendung so funktioniert. Nun möchte ich eine Userform anhand einer Datentabelle über die oben aufgeführte Schleife (For ... next) aufbauen (in aktivate des uf3) und habe hier die Position in NEPUMUKS Lösung "hight" variabel machen wollen (Eigenschaft). Gleichzeitig sollten die Werte (Beim NEPUMUK die 120) auch über eine Variable zugeführt werden.
VBA sagt mir entweder Typenkonflikt oder Objekt konnte nicht gefunden werden.
Zur Zeit bin ich schlichtweg ratlos, warum die Lösung von NEPUMUK wunderbar läuft und mein Ansatz (Zuordnungen über Variablen) nicht.
Weiß jemand von Euch was ich mal wieder falsch mache?
Würde mich über eine Antwort freuen!
Gruß,
Helmut Palmen

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wer kann helfen? Habe leider noch keinen Lösungsan
16.09.2005 23:41:30
HansH
Hallo Helmut,
kannst du dein bisheriges Ergebnis uploaden? Vielleicht werden sie da geholfen.
Gruß
HansH
AW: Wer kann helfen? Habe leider noch keinen Lösungsan
18.09.2005 20:41:42
helmut
Hallo Hans,
vielen Dank für Deine Mühen, werde das Ergebnis von Franz nehmen, da es schon recht nahe an das was ich mir vorstellte heran kommt.
Gruß,
Helmut
AW: Wer kann helfen? Habe leider noch keinen Lösun
17.09.2005 14:45:21
Franz
Hallo Helmut,
Meines Wissens ist es nicht möglich, Eigenschafts-Variablen (Top, Left, Heigt, etc.) der Objekte (hier Userform-Elemente) indirekt anzusprechen.
uf3.Controls(ws2.Cells(textfeld, 1)).eigenschaft= zuordnung
Die Variable "eigenschaft" gibt es für das Element nicht, deshalb kommt die die Fehlermeldung
NEPOMUKS Beispiel
controls(cells(22,4).text).hight=120
Liest aus Cells(22,4) den Namen des Control-Elements aus und weist der Variablen "hight" des Control-Elements den Wert 120 zu.
Das ".text" hinter Cells(22,4) ist wichtig, damit hier der Text-Inhalt der Zelle ausgelesen wird. Läßt man ".text" weg, verwendet VBA möglicherweise Value oder Range der Zelle als Wert und dan kommt ggf. der Fehler Typenunverträglichkeit.
Folgendermaßen könntest Du Deine Userforms variabel kreieren, wenn sie aktiviert werden.
Dabei muß für jede Eigenschaft, die Du anpassen möchtest eine CASE-Anweisung erstellt sein.

Private Sub UserForm_Activate()
Dim ws2 As Worksheet, Element As Object, Eigenschaft As String, Zuordnung As Variant
Set ws2 = ActiveWorkbook.Worksheets("TabQuer")
For textfeld = 131 To 157 'gehe von Zeile 131 bis 157
Eigenschaft = ws2.Cells(textfeld, 2) 'z.B. Visible, Top, Left, etc.
Zuordnung = ws2.Cells(textfeld, 3) 'Datenzuordnung aus 2.Datentabelle
Set Element = Controls(ws2.Cells(textfeld, 1).Value)
Select Case Eigenschaft
Case "Visible"
Element.Visible = Zuordnung
Case "Height"
Element.Height = Zuordnung
Case "Top"
Element.Top = Zuordnung
Case "Left"
Element.Left = Zuordnung
Case "Width"
Element.Width = Zuordnung
Case "Width"
Element.Width = Zuordnung
Case "Backcolor"
Element.BackColor = Zuordnung
Case "SetFocus"
Element.SetFocus
Case Else
MsgBox ("Für Eigenschaft " & Eigenschaft & " existiert keine CASE - Anweisung!!")
End Select
Next
End Sub

Gruß
Franz
Anzeige
AW: Wer kann helfen? Habe leider noch keinen Lösun
18.09.2005 20:39:29
helmut
Hallo Franz,
ich habe bereits mit einigen Kumpels das Thema bearbeitet. Wir sind nach viel probieren auch auf eine ähnliche Lösung gekommen wie bei Dir. Vielen Dank für Deine Mühe! Ich vermute fast, das es nur über Klassenerstellung gehen wird?!! Ich werde wohl Deine Lösung nehmen, da diese eigentlich schon recht nahe an meine Vorstellung heran kommt.
Vielen Dank für Deine Hilfe!
Gruß,
Helmut Palmen

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige