Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Variable an UserForm

531 views
Skip to first unread message

Melanie Breden

unread,
Jul 3, 2002, 5:12:09 PM7/3/02
to
Hallo zusammen,
ich rufe eine UserForm mit vbmodeless auf, um Zellen in der Tabelle zu
markieren.
Mit dem Worksheet_SelectionChange- Ereignis übergebe ich in der Tabelle
einer globalen Variablen einen neuen Wert.

Public Überschrift_1$ 'in allgemeinem Modul

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Column > 45 Then Exit Sub
If ActiveCell.Column > 5 And ActiveCell.Column < 42 Then
Überschrift_1 = Cells(7, 6).Value
Else
Überschrift_1 = Cells(7, ActiveCell.Column).Value
End If
End Sub

Nun möchte ich in der UserForm auf das Worksheet_SelectionChange- Ereignis
in der Tabelle reagieren, um die globale Variable an die Userform zu geben:

Private Sub UserForm_Initialize()
Label3.Value = Überschrift_1
End Sub

Kann mir jemand weiterhelfen?

vielen Dank für Tipps.

mit Gruß
Melanie


Martin Egli

unread,
Jul 3, 2002, 5:23:39 PM7/3/02
to
Hallo Melanie

Also ganz habe ich Dein Problem nicht verstanden; Deinen Codebeispielen an
bist Du nicht eine sehr erfahrene VBA-Programmiererin ;-)
Beispielsweise würde ich in der SelectionChange-Prozedur auf Target.Column
abfragen und nicht auf ActiveCell, die Deklaration mit dem Typenzeichen $
ist auch nicht mehr gerade zeitgemäss (aber funktionstüchtig).
Zu Deiner Frage; du musst den Wert übergeben:

> Private Sub UserForm_Initialize(Wert as String)
> Label3.Value = Wert
> End Sub

Damit das funktioniert, musst du beim Aufruf der Form die Variable auch
angeben:

Userform.Load (Ueberschrift_1) vbModeless

Hoffe, das hilft.
Gruss
Martin


"Melanie Breden" <Melanie...@arcor.de> schrieb im Newsbeitrag
news:eiQR7WtICHA.2060@tkmsftngp11...

Melanie Breden

unread,
Jul 3, 2002, 7:36:07 PM7/3/02
to
Hallo Martin,

"Martin Egli" schrieb:


> Also ganz habe ich Dein Problem nicht verstanden; Deinen Codebeispielen an
> bist Du nicht eine sehr erfahrene VBA-Programmiererin ;-)

stimmt...ich übe noch.

> Beispielsweise würde ich in der SelectionChange-Prozedur auf Target.Column
> abfragen und nicht auf ActiveCell,

ursprünglich stand der Code zum testen in einem allgemeinen Modul, hatte
ich später in target geändert ;-))

die Deklaration mit dem Typenzeichen $
> ist auch nicht mehr gerade zeitgemäss (aber funktionstüchtig).
> Zu Deiner Frage; du musst den Wert übergeben:
>
> > Private Sub UserForm_Initialize(Wert as String)
> > Label3.Value = Wert
> > End Sub
>
> Damit das funktioniert, musst du beim Aufruf der Form die Variable auch
> angeben:
> Userform.Load (Ueberschrift_1) vbModeless

danke dir für deine Antwort.
Beim aufrufen der Form wird die Variable übergeben, dass ist kein Problem.
Da aber die UserForm stehen bleibt, möchte ich je nach markierter Zelle
einen bestimmten Wert in die Form einlesen, ohne die Form erneut aufzurufen.

Habe es jetzt doch über ein allgemeines Modul gelöst und rufe die
Aktualisierung über einen CommandButton auf.
...
Call Überschriften_anzeigen
Bez = Überschrift_1 & " / " & Überschrift_2
Label3.Caption = Bez
...

Vielleicht hat ja noch jemand eine Idee, wie ich in eine aufgerufene
UserForm globale Variablen der Tabelle aktualisieren kann?

mit Gruß
Melanie

Martin Egli

unread,
Jul 5, 2002, 7:09:55 AM7/5/02
to
Hi Melanie

Ich sehe schon, Du findest die geeigente Lösung selber.
Ein Tippchen hätte ich noch. Einige Steuerelemente kann man fix mit einer
Zelle verknüpfen. Beispielsweise Text- oder Listenfelder (die Eigenschaft
dazu heisst 'ControlSource').
Ich habe hier leider kein Excel2000 und kann das nicht ausprobieren. Wenn Du
aber anstatt eines Label's ein Textfeldfeld nimmst, sollte es eigentlich
gehen.

Gruss
Martin

"Melanie Breden" <Melanie...@arcor.de> schrieb im Newsbeitrag

news:erBkhnuICHA.3836@tkmsftngp10...

Melanie Breden

unread,
Jul 6, 2002, 11:00:53 AM7/6/02
to
Hallo Martin,

"Martin Egli" <marti...@lake.ch> schrieb im Newsbeitrag
news:emI8oSBJCHA.2464@tkmsftngp12...


> Hi Melanie
>
> Ich sehe schon, Du findest die geeigente Lösung selber.
> Ein Tippchen hätte ich noch. Einige Steuerelemente kann man fix mit einer
> Zelle verknüpfen. Beispielsweise Text- oder Listenfelder (die Eigenschaft
> dazu heisst 'ControlSource').
> Ich habe hier leider kein Excel2000 und kann das nicht ausprobieren. Wenn
Du
> aber anstatt eines Label's ein Textfeldfeld nimmst, sollte es eigentlich
> gehen.

die Eigenschaft 'ControlSource' war mir bekannt, auf die Idee diese zu
verwenden kam ich nicht.
Danke dir für dein "Tippchen". Diese Automation ist in jedem Fall besser,
als ständig zusätzlich einen Button zur Aktualisierung zu drücken.

Mit dem Change-Ereignis schreibe ich jetzt den zusammengesetzten String in
eine Zelle. In der UserForm greift eine Listbox auf diese Zelle zu.
Eine Textbox konnte ich nicht nehmen. Wenn bei dieser die Eigenschaft
"Enabled" auf "true" gesetzt ist, meldet Excel / Microsoft Forms einen
Ausnahmefehler. Wegen des Layouts der Schrift nehme ich jetzt die Listbox.

Der zusammengesetzten String entsteht durch verschiedene Zellinhalt
(Überschriften).
Leider erscheint in der Listbox auch ein manueller Zeilenumbruch aus einer
Zelle (Absatzmarke).
Wie kann ich das unterbinden?

Hat dazu jemand eine Idee?

mit Gruß
Melanie


0 new messages