Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
948to952
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
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

UserForm bei T.blattwechsel andere Userform ......

UserForm bei T.blattwechsel andere Userform ......
06.02.2008 07:10:36
Andreas
ansprechen.
Guten Morgen zuerst.
Ich habe hier eine Tabelle mit 10 Tabellenblättern. 9 davon verwenden eine UserForm2, die widerrum eine andere UserForm1 anspricht um Bilder anzuzeigen. Ist es möglich, daß wenn ich das Tabellenblatt wechsel, die Hauptuserform, die auf der Arbeitsmappe gebunden ist, dann auch eine andere Userform nutzt, da ich diese auf das jeweilige Tabellenblatt binden muss?
UserForm2 ist auf die Arbeitsmappe gebunden. Auf der Arbeitsmappe ist folgender Code eingebunden

Private Sub Workbook_Open()
UserForm2.Show vbModeless
Worksheets(2).Activate
Worksheets(1).Activate
End Sub


Die UserForm2 selbst hat diesen Code


Private Sub CommandButton1_Click()
UserForm1.Show
End Sub



Private Sub UserForm_Initialize()
With Me
.StartUpPosition = 0
.Top = 130
.Left = 825
End With
End Sub


Ich gehe davon aus,daß es unerheblich ist, welchen Code die UserForm1 hat. Deshalb poste ich diesen Code nicht. Für Tipps oder Hilfestellungen, sofern ich sie mit meinem Wissen verarbeiten kann, wäre ich dankbar und wären hilfreich.
mfG
Andreas Müller

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm bei T.blattwechsel andere Userform ..
06.02.2008 09:21:00
fcs
Hallo Andreas,
hier ein Beispiel, wie man den Code unter DieseArbeitsmappe anpassen muss, um beim Aktivieren eines Blattes ein entsprechendes Userform anzuzeigen.
Zusätzlich muss du im Code deiner Userforms für die Buttons, die die Bearbeitung im Userform beenden/abschliessen ggf. eine Anweisung
Me.Hide
oder
Unload Me
einfügen, damit die Prozeduren nicht in eine Verschachtelung geraten, sondern immer kontrolliert zu der Prozedur zurückkehren, die das Userform aufruft.
Gruß
Franz
Codebeispiel für DieseArbeitsmappe (Blatt Nr. 1 ist dabei das Blatt, bei dem Userform2 nicht angezeigt werden soll):

Private Sub Workbook_Open()
If ActiveSheet.Index  1 Then UserForm2.Show
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'Userform anzeigen wenn Blatt aktiviert wird
Select Case Sh.Index
Case 1
'do nothing
Case 2 To 10
UserForm2.Show vbModeless
Case Else
MsgBox "Für Blatt """ & Sh.Index & " (" & Sh.Name _
& ")"" isr kein Case beim Aktivieren des Blatts festgelegt!"
End Select
End Sub


Code-Beispiel für Userform 2:


Private Sub CommandButton1_Click()
'Userform1 anzeigen
Me.Hide
UserForm1.Show
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub


Code-Beispiel für Userform 1:


Private Sub CommandButton1_Click()
'OK-Button
'do something Code
MsgBox "OK-Button geklickt!"
Unload Me
End Sub
Private Sub CommandButton2_Click()
'Abbrechen-Button
Unload Me
End Sub


Anzeige
AW: UserForm bei T.blattwechsel andere Userform ..
06.02.2008 11:11:32
Andreas
Hi Franz,
danke für die schnelle Antwort. Aber wahrscheinlich habe ich mal wieder falsch oder total umständlich erklärt. Ich will, daß Userform 2 immer angezeigt wird, was ja auch schon funktioniert Mit der UserForm2 rufe ich ja derzeit UserForm1 auf. Da ich aber aufgrund der Anforderung in der Arbeitsmappe 8 Tabellenblättern mit 8 verschiedenen Userforms benötige, muss die UserForm2 beim Tabellenblattwechsel die dementsprechende UserForm ansprechen. Also in der UserForm2 muss stehen, wenn Tabelleblatt x gewählt wird, dann USerForm3, wenn Tabellenblatt y, dann UserForm4 usw. Ist das überhaupt steuerbar mit der UserForm? War das verständlich (sorry wenn dem nicht so ist).
Gruß aus der Pfalz
Andreas

Anzeige
AW: UserForm bei T.blattwechsel andere Userform ..
06.02.2008 14:11:00
fcs
Hallo Andreas,
nicht 100% getestet folgende Prozedur für den Button im userform2. Statt mit der Index-Eigenschaft kannst du die Case-Anweisungen natürlich auch mit den Name-Eigenschaft der Tabellenblätter aufbauen.
Gruß
Franz

Private Sub CommandButton1_Click()
'Userform anzeigen wenn Blatt aktiv
Select Case ActiveSheet.Index
Case 1, 2
'do nothing
Case 3
UserForm1.Show
Case 4
UserForm3.Show
Case 5
UserForm4.Show
Case 6
UserForm5.Show
Case 7
UserForm6.Show
Case 8
UserForm7.Show
Case 9
UserForm8.Show
Case 10
UserForm9.Show
Case Else
MsgBox "Für Blatt """ & ActiveSheet.Index & " (" & ActiveSheet.Name _
& ")"" ist kein Case für den Userformbutton festgelegt!"
End Select
End Sub


Anzeige
AW: UserForm bei T.blattwechsel andere Userform ..
06.02.2008 18:41:00
Andreas
Hallo,
hab ich das richtig verstanden, daß ich case 1 oder case 2 mit den Tabellenblattnamen ersetzen kann? Ich habe den Code eingefügt, aber ich versteh ihn eben nicht :-(. Deswegen kann ich auch nicht sagen warum es nicht geht. Okay die anderen UF muss ich ja noch machen, aber die UF1 ist ja hier und muss ja gehen. Die steht unter Case3. Nun ich habe ja schon ein Problem mit
Case 1, 2
'do nothing
Case 3
UserForm1.Show
Was passiert mit Case 1, 2 do nothing? Es liegt am Verständnis, warum ich das nicht korrekt einordnen kann, Index Eigenschaft oder Name-Eigenschaft. Excel ist echt ein Problem sobald es in solche Sachen rein geht :-(. Kannst du mir das erklären, was mit dem Case angesprochen wird oder wie ich es in meine Tabellenblattnamen umbauen kann?
Gruß Andreas

Anzeige
AW: UserForm bei T.blattwechsel andere Userform ..
06.02.2008 22:01:10
fcs
Hallo Andreas,
die Index-Eigenschaft ist die Zählnummer des Blattes entsprechend der Anordnung der Blattregister beginnend von links, die Name-Eigenschaft ist der auf dem Blattregister eingetragene Name des Tabellen- oder Diagrammblatts.
Im VBA-Editor von Excel gibt gibt es übrigens auch eine Hilfe-Funktion mit Erläuterungen. Schau mal unter dem Stichwort Case.
Select Case XXX
Case 1, 2
Case 3
Case 4
Case Else
End Select
entspricht den Anweisungen
If XXX = 1 Or XXX = 2 Then
Elseif XXX = 3 Then
Elseif XXX = 4 Then
Else
Endif
ist aber meist sehr viel übersichtlicher in der Struktur und ggf. einfacher in der Programmierung.
Das "'do nothing" ist meine persönliche Art, Bedingungen durch eine Bermerkungszeile zu kennzeichnen bei denen nichts passieren soll. Diese Zeile kann man auch weglassen.
Wenn du Tabellennamen zur Steuerung der Userform-Anzeige verwenden willst, dann schaut der Code etwa wie folgt aus. Aber wie schon gesagt; ich ist nicht 100$ getestet, da mein Excel97 noch keine UF mit dem Modus "vbModeless" anzeigen kann.
Gruß
Franz

Private Sub CommandButton1_Click()
'Userform anzeigen wenn Blatt aktiv
Select Case ActiveSheet.Name
Case "Tabelle1", "Tabelle2"
'do nothing
Case "Tabelle3"
UserForm1.Show
Case "Tabelle4"
UserForm3.Show
Case "Tabelle5"
UserForm4.Show
Case "Tabelle6"
UserForm5.Show
Case "Tabelle7"
UserForm6.Show
Case "Tabelle8"
UserForm7.Show
Case "Tabelle9"
UserForm8.Show
Case "Tabelle10"
UserForm9.Show
Case Else
MsgBox "Für Blatt """ & ActiveSheet.Name _
& """ isr kein Case für Anzeige Userform festgelegt!"
End Select
End Sub


Anzeige
AW: UserForm bei T.blattwechsel andere Userform ..
06.02.2008 23:23:00
Andreas
Hallo Franz,
das funktioniert jetzt einwandfrei. Toll. Danke für deine Hilfe und den Einsatz. Ich werde mal nachschauen, ob ich aus der Hilfe wie du sie erwähnst schlau geworden wäre.
Gruß Andreas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige