Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1092to1096
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
Inhaltsverzeichnis

UF_Initialize springt immer an

UF_Initialize springt immer an
Jörg-HH
Guten Abend / Guten Morgen
ich habe in meiner Mappe eine Userform mit Spreadsheet (mit Ramses' Hilfe mühsam zum Laufen gekriegt...)
Per Zufall stelle ich gerade fest, daß die Private Sub UserForm_Initialize() nahezu immer aufgerufen wird, wenn ich eine Zelle in dem betreffenden Blatt anklicke. Aber eben nicht bei allen Zellen.
Ist das normal? Und gibt es eine allgemeine Aussage, bei welchen Zellen das passiert?
Ich dachte, das würde nur passieren, wenn ich die per Select Case bestimmte Zelle anklicke - wo dann die Userform aufpoppt.
nächliche Grüße - Jörg

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
da braüchte man Deinen Code ...
11.08.2009 07:33:04
Matthias
Hallo
... um aussagefähig zu sein.
Allgemein mal so:
steht in Deiner Tabelle z.B.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UserForm1.Show
End Sub

wird das Userform bei jeden Klick in eine beliebige Zelle geladen


steht in Deiner Tabelle aber z.B.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 Then
UserForm1.Show
End If
End Sub
wird das UserForm nur bei Klick in Spalte 2 (B) geladen


willst Du einschränken, das dabei nur eine Zelle selektiert sein darf, dann so:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 And Target.Count = 1 Then
UserForm1.Show
End If
End Sub


Du siehst also es gibt da mehrere Möglichkeiten. Ohne Deinen Code zu sehen,
kann man leider nur Vermutungen anstellen.
hier ein Beispiel:
https://www.herber.de/bbs/user/63747.xls
Gruß Matthias
Anzeige
oh, oh =ERSETZEN("braüchte";3;2;"äu") kwT
11.08.2009 08:02:24
Matthias
...schau mal rein...
11.08.2009 08:39:40
Jörg-HH
Guten Morgen, Matthias
der Code steht hier:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Name
Case Range("FGWahl").Name
With uf_FormatGrp_Anzeige
.Show
End With
Case Else
On Error Resume Next
Unload uf_FormatGrp_Anzeige
End Select
End Sub
Wenn ich dich richtig verstanden habe, dürfte das UF.Show auf diese Weise nur bei Klick auf FGWahl erscheinen - das tut es auch nur dann.
Ich habe bloß zufällig bemerkt (als ich was Anderes probieren wollte), daß der Code in Userform-Initialize angesprungen wird, wenn ich irgend eine andere Zelle anklicke. Wenn dann dort im Initialzie-Code was steht (zB mach Zelle soundso blau), dann wird das glatt ausgeführt, auch wenn ich nicht auf FGWahl klicke.
Ich meine damit: Warum wird UF-Initialize aktiviert, obwohl ich nix bei FGWahl gemacht habe?
Hier noch der Code aus dem Modul:
Option Explicit
Private Sub UserForm_Initialize()
'Die Größe des Spreadsheets muß hier festgelegt werden. Andernfalls (=in ReadMyData)
'würden sich die Abmessungen unkontrollierbar ändern.
Dim mySpSht As Spreadsheet
Set mySpSht = Me.SpSht_FormGrpAnzg
With mySpSht
.Height = 180
.Width = 160
End With
ReadMyData
End Sub

Private Sub ReadMyData()
'holt die Zellen aus ListeFGrSpSht ins Spreadsheet
Dim i As Long, n As Long
Dim mySpSht As Spreadsheet
Set mySpSht = Me.SpSht_FormGrpAnzg
With mySpSht
For i = 1 To 3
For n = 1 To 13
.Cells(n, i) = Worksheets("Listen").Range("ListeFGrSpSht").Cells(n, i)
Next n
Next i
End With
End Sub

Private Sub cmd_SpShtÜbernehmen_Click()
'übernimmt nach Markieren einer Formatgruppe auf dem Spreadsheet die gewählte Formatgruppe
'in die Zelle FGWahl (das ist TP-Daten!E92 zum Stand Juli 09)
ActiveCell = Me.SpSht_FormGrpAnzg.Selection.Value
End Sub

Private Sub cmd_SpShtSchliessen_Click()
Unload Me
End Sub
Grüße - Jörg
Anzeige
probier mal ...
11.08.2009 09:07:32
Matthias
Hallo
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("FGWahl")) Is Nothing Then
uf_FormatGrp_Anzeige.Show
End If
End Sub
Gruß Matthias
Lösung gefunden
12.08.2009 12:38:59
Jörg-HH
Hallo Matthias
erstmal vielen Dank für deine Beispieldatei. Die hab ich mir mal auf die Platte gebunkert - denke, sie wird mir künftig als Vorlage noch viele gute Dienste leisten :-)
Die Lösung ist anscheinend ganz einfach gewesen - ich hatte bloß an der falschen Stelle einen Haltepunkt gesetzt und konnte daher nicht überblicken, was passiert. Im Screenshot unter https://www.herber.de/bbs/user/63781.doc
hab ich mal abgebildet, was ich meinte. Da hat wohl das Case else nochmal das Initialize aufgerufen - kann ich als Laie natürlich nicht überblicken, was bei Unload alles passiert. Ich hab das erst gemerkt, als ich zufällig mal den Haltepunkt bei select case gesetzt hatte. Ich habs jetzt rausgenommen, und alles läuft wie erwartet.
Grüße - Jörg
Anzeige
AW: Zellselektion und Userform
11.08.2009 09:43:57
fcs
Hallo Jörg,
bei mir (Excel 2003, Windows XP) führt deine Worksheet_SelectionChange-Anweisung direkt zu einem Fehler 1004.
Die Initialize-Prozedur wird auch bei dem Unload-Befehl nochmals ausgeführt.
Du solltest die Prozedur zur Abfrage der selektierten Zelle(n) wie folgt aufbauen:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("FGWahl")) Is Nothing Then
With uf_FormatGrp_Anzeige
.Show
End With
Else
'do nothing
End If
End Sub
'oder
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = Range("FGWahl").Address Then
With uf_FormatGrp_Anzeige
.Show
End With
Else
'do nothing
End If
End Sub

Im Code der Userform ergänzt du folgende Prozedur, um sicherzustellen, dass die UF nach dem Schließen aus dem Excel-Arbeits-Speicher gelöscht wird.
Private Sub UserForm_Terminate()
Unload Me
End Sub

Gruß
Franz
Anzeige
aha - jetzt verstanden
12.08.2009 12:45:28
Jörg-HH
Hallo Franz
danke für deine Gehhilfe. Ich hatte sie im ersten Anlauf nicht ganz verstanden. Als ich mich heute morgen nochmal an das Problem machte, entdeckte ich den Haken https://www.herber.de/bbs/user/63781.doc (mehr Text dazu in meiner Rückmeldung an Matthias).
Jetzt versteh ich auch deinen Code - ich vermute, mit dem Löschen von Case Else hab ich das gemacht, was du mit 'do nothing meintest...?
Grüße - Jörg

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige