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

Ereig b Verla eines Bilds md Maus i.e. Userform

Ereig b Verla eines Bilds md Maus i.e. Userform
10.01.2004 20:24:35
Elmar Steigenberger
Hallo Ihr Profis,
ich habe eine Userform mit 8 Bildern zur Auswahl. Ich möchte, dass wenn der User mit der Maus auf ein Bild geht, dass es sich vergrößert und wenn er weggeht, dass es wieder in die vorige Form zurückgeht.
Das Vergrößern klappt alles:

Private Sub Etiketten8_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Etiketten8.SpecialEffect = fmSpecialEffectRaised
Etiketten8.Top = 6.8
Etiketten8.Left = 12.75
Etiketten8.Height = 119
Etiketten8.Width = 87
End Sub

Das Verkleinern klappt aber nicht.
Ich hab mal im Archiv gesucht und da was mit LostFocus gefunden, das aber auch nicht weiterhilft. Irgendwie müßts so ausschauen:

Private Sub Etiketten8_LostFocus()
Etiketten8.SpecialEffect = fmSpecialEffectSunken
Etiketten8.Top = 11.8
Etiketten8.Left = 17.75
Etiketten8.Height = 124
Etiketten8.Width = 92
End Sub

Geht das irgendwie in Excel und wenn ja, wie?
Ich bin im Userform programmieren noch recht neu.
Vielen Dank fürs Lesen und Antworten!
liebe e-Grüße Elmar

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ereig b Verla eines Bilds md Maus i.e. Userform
10.01.2004 20:34:20
y
hi Elmar,
wo wandert die muas denn hin ?
versuchs doch mal mit userform_mousemove
cu Micha
AW: Ereig b Verla eines Bilds md Maus i.e. Userform
11.01.2004 00:25:04
Elmar Steigenberger
Hallo Micha,
Vielen Dank für die Antwort. Ja, das hilft mir weiter. Aber ich sehe es genauso wie Du, dass man es nur einmal schreiben muß, wie Ramses es vorschlägt. Allerdings muß ich auch noch jedes Mal die Top, left, Height and Width festlegen, da ja jedes Bild raus und wieder reinspringen soll und diese Werte dann jedes Mal woanders sind...
liebe e.Grüße
Elmar Steigenberger
AW: Ereig b Verla eines Bilds md Maus i.e. Userform
11.01.2004 00:39:10
y
hi Elmar,
ohne Ramses vorgreifen zu wollen aber das kannst du doch auch über eine zwischenspeicherung mit variablen machen
genau nach demselben prinzip
...und wenn die vergrößerung irgendwie errechenbar ist brauchst du auch das nur einmal schreiben ;-)
cu Micha
Anzeige
AW: Ereig b Verla eines Bilds md Maus i.e. Userform
10.01.2004 20:43:44
Ramses
Hallo
du musst mit einer Variablen arbeiten, der du den Namen des Controls übergibst

Das gehört in ein Modul
Public chkControl As String
Den Code kennst du ja

Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
chkControl = "Image1"
Me.Image1.SpecialEffect = fmSpecialEffectRaised
Me.Image1.Top = 6.8
Me.Image1.Left = 12.75
Me.Image1.Height = 119
Me.Image1.Width = 87
End Sub

Das gehört ebenfalls in die Userform
Wenn das Bild verlassen wird, kommt das Userform_MouseMove zum Tragen

Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If chkControl = "" Then Exit sub
Me.Controls(chkControl).SpecialEffect = fmSpecialEffectSunken
Me.Controls(chkControl).Top = 11.8
Me.Controls(chkControl).Left = 17.75
Me.Controls(chkControl).Height = 124
Me.Controls(chkControl).Width = 92
chkControl = ""
End Sub

Gruss Rainer
Anzeige
@ramses: variable ?
10.01.2004 21:00:48
y
hi ramses,
warum denn extra eine variable ?
es sind doch genug eigenschaften für die if-abfrage vorhanden
cu Micha
AW: @ramses: variable ?
10.01.2004 21:20:40
Ramses
Hallo
damit das MouseMove Ereignis der Userform immer das richtige Image wieder verkleinert :-)
Dann musst du das nämlich nur einmal schreiben ;-))
Gruss Rainer
AW: @ramses: sorry
10.01.2004 21:23:47
y
oki,
entweder schleife oder variable ;-)
deins ist eleganter ;-)
seh ich ein
cu Micha
No problem ;-)) o.T.
10.01.2004 21:26:53
Ramses
...
AW: Ereig b Verla eines Bilds md Maus i.e. Userform
11.01.2004 00:29:58
Elmar Steigenberger
Hallo Rainer,
Das ist ja eine wirklich fantastische Lösung! Vielen Dank!
Ich denke ich muß aber auch noch die Original Top und Left-Werte jedes Bildes in mein erstes Mausmove bei jedem Bild einbauen, da ja beim Anspringen der Userform_Mausmove dieses Bild an seine ursprüngliche Pósition zurückspringen soll und die ist ja bei jedem Bild anders und nicht eben jedesmal 11.8 und 17.75. Aber Du hast mich auf den richtigen Trichter gebracht! Super!
Oder hast Du da noch ne andere Idee?
liebe e.Grüße
Elmar
Anzeige
So klappts leider noch nicht...
11.01.2004 00:59:15
Elmar Steigenberger
Hallo!
Superlösung, ich weiß es, aber ich kenn mich halt mit Userforms nochnicht so aus. Excel und ich können mit
Me.Controls(chkControl).Top = 11.8
mit dem Me.xxx noch nichts anfangen.
Excle bringt auf alle Fälle einen Laufzeitfehler Das angegebene Objekt konnte nicht gefunden werden
Das muß man doch noch irgendwie definieren, oder?
Die UserForm heißt verschEtiketten.
Kann mir da bitte jemand noch auf die Sprünge helfen?
liebe e.Grüße Elmar
AW: So klappts leider noch nicht...
11.01.2004 01:35:01
y
hi Elmar,
kopier das alles mal so wie es ist in das formularmodul

Option Explicit
Public chkControl As String
Public chkControlTop As Double
Public chkControlLeft As Double
Public chkControlHeight As Double
Public chkControlWidth As Double

Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If chkControl <> "" Then Exit Sub
chkControl = "Image1"
chkControlTop = Me.Image1.Top
chkControlLeft = Me.Image1.Left
chkControlHeight = Me.Image1.Height
chkControlWidth = Me.Image1.Width
Me.Image1.SpecialEffect = fmSpecialEffectRaised
Me.Image1.Top = 6.8
Me.Image1.Left = 12.75
Me.Image1.Height = 119
Me.Image1.Width = 87
End Sub


Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If chkControl = "" Then Exit Sub
Me.Controls(chkControl).SpecialEffect = fmSpecialEffectSunken
Me.Controls(chkControl).Top = chkControlTop
Me.Controls(chkControl).Left = chkControlLeft
Me.Controls(chkControl).Height = chkControlHeight
Me.Controls(chkControl).Width = chkControlWidth
chkControl = ""
End Sub

cu Micha
Anzeige
AW: So klappts .... FANTASTICO !! Danke!!!
11.01.2004 02:32:16
Elmar Steigenberger
Hallo Micha,
ja das isses... Supi!!!
Und das ist eine saugute Idee, alles sich aus der UserForm schon am Anfang holen zu lassen. Das hat mich um Welten vorangebracht, auch für alle zukünftigen Userformen!
Vielen Dank!
Elmar
P.S.: Noch ne dumme Newbie-Frage: Redet man sich hier eigentlich nun mit dem Nickname (y)oder mit Unterzeichnername (Micha) an?
Noch eine Lösung
11.01.2004 07:43:03
GraFri
Hallo
Vielleicht zu gebrauchen:


' Wenn der Mauszeiger auf das Bildobjekt Image 'imgBild' kommt, verändert sich
' die Größe je nach Einstellung der Konstanten 'expFaktor'. Werte kleiner als 1
' bewirken eine Verkleinerung (dabei kann ein Flattereffekt auftreten, da sich
' durch die Verkleinerung der Mauszeiger außerhalb des Bildes befinden kann).
' Werte größer als 1 bewirken eine Vergrößerung.
'
' Die Konstante 'expStyle' legt den Stil der Größenänderung fest. Dieser Wert
' (wie auch der Wert 'expFaktor' für Größenänderung) kann aber auch im Programm-
' code festgelegt werden, um z.B. verschiedene Effekte zu erreichen.
'       1   linke obere Ecke behält seine Position
'       2   rechte obere Ecke behält seine Position
'       3   linke untere Ecke behält seine Position
'       4   rechte obere Ecke behält seine Position
'       5   Bildzentrum behält seine Position
'
' Das Prinzip funktioniert auch mit anderen Steuerelementen

Option Explicit
Dim indBild             As Boolean
Dim indForm             As Boolean
Const expFaktor         As Single = 2.5     'kann auch im Code festgelegt werden
Const expStyl           As Integer = 5      'kann auch im Code festgelegt werden
Private Sub UserForm_MouseMove(ByVal Button As Integer, _
                               ByVal Shift As Integer, _
                               ByVal As Single, _
                               ByVal As Single)
    
If indBild = True Then
    With imgBild
        .Height = .Height / expFaktor: .Width = .Width / expFaktor
    Select Case expStyl
        Case 1              'von linker oberen Ecke expandieren
        Case 2              'von rechter oberen Ecke expandieren
            .Left = .Left + (expFaktor - 1) * .Width
        Case 3              'von linker unteren Ecke expandieren
            .Top = .Top + (expFaktor - 1) * .Height
        Case 4              'von rechter unteren Ecke expandieren
            .Left = .Left + (expFaktor - 1) * .Width
            .Top = .Top + (expFaktor - 1) * .Height
        Case 5              'zentriert expandieren
            .Left = .Left + (expFaktor - 1) * .Width / 2
            .Top = .Top + (expFaktor - 1) * .Height / 2
    End Select
    End With
End If
    
    indForm = True: indBild = False
End Sub
Private Sub imgBild_MouseMove(ByVal Button As Integer, _
                              ByVal Shift As Integer, _
                              ByVal As Single, _
                              ByVal As Single)
If indForm = True Then
    
    With imgBild
    Select Case expStyl
        Case 1              'von linker oberen Ecke expandieren
        Case 2              'von rechter oberen Ecke expandieren
            .Left = .Left - (expFaktor - 1) * .Width
        Case 3              'von linker unteren Ecke expandieren
            .Top = .Top - (expFaktor - 1) * .Height
        Case 4              'von rechter unteren Ecke expandieren
            .Left = .Left - (expFaktor - 1) * .Width
            .Top = .Top - (expFaktor - 1) * .Height
        Case 5              'zentriert expandieren
            .Left = .Left - (expFaktor - 1) * .Width / 2
            .Top = .Top - (expFaktor - 1) * .Height / 2
    End Select
        .Height = .Height * expFaktor: .Width = .Width * expFaktor
    End With
    
End If
    indForm = False: indBild = True
    
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5

mfg, GraFri
Anzeige
AW: Noch eine Lösung
12.01.2004 17:19:34
Elmar Steigenberger
Hall GraFri,
das sieht ja sehr interessant aus.... Mal schaun, ob ich die nächsten Tage mal dazukomme, das auszuprobieren. Kann ich aber noch nicht versprechen, obs klappt...
liebe e-Grüße und Vielen Dank für die Mühe, die da drinsteckt!
Elmar
AW: So klappts .... FANTASTICO !! Danke!!!
11.01.2004 10:01:08
Ramses
Hallo Elmar
Es gibt keine dummen Fragen :-)
Die Nicknames die hinter dem Beitrag stehen, sind teilweise historisch bedingt, meiner ist nun auch schon fast 5 Jahre alt, ... man gewöhnt sich daran.
Unterschrieben im Beitrag sollte aber immer mit dem realen Vornamen werden, es macht sich einfach besser :-)) und erleichtert die Anrede.
Gruss Rainer
Anzeige
Genau so...
11.01.2004 09:58:21
Ramses
Hallo Micha
hätte ich es auch gemacht :-))
Gestern abend war irgendwie der Wurm drin, ich bin auf jeden Fall nach dem Beitrag von Boris ( 2 Beiträge weiter oben ) nicht mehr aufs Forum gekommen.
Danke für die Weiterführung.
Gruss Rainer
AW: Genau so...
11.01.2004 11:35:31
y
hi Rainer,
das forum war heute bis 0:30 down
ich hatte im spotlight auch ne nachricht geschrieben, dass es wieder funzt
...als du hier um 1:30 noch nicht geantwortet hast habe ich die frage beantwortet ;-)
wenn du mit mir zufrieden bist bin ich ja glücklich :-)
cu Micha

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige