Makros und Bilder

Hallo Experten.

Da ich noch neu bin hoffe ich im richtigen Forum zu Posten.

Ich muss ein Bild per Klick von 20% auf 100% vergrössern und mit dem nächsten klick wieder auf 20% verkleinern.
Ich habe bereits ein Makro das mir das Bild verkleinert und ein Makro das mir das Bild wieder vergrössert.
Nun weiss ich nicht wie ich das mit dem Klick hin bekomme kann?
Ich bin froh umm jeden input.

Besten Dank im voraus für Eure zahlreiche Hilfe.

Ich muss ein Bild per Klick von 20% auf 100% vergrössern und
mit dem nächsten klick wieder auf 20% verkleinern.
Ich habe bereits ein Makro das mir das Bild verkleinert und
ein Makro das mir das Bild wieder vergrössert.
Nun weiss ich nicht wie ich das mit dem Klick hin bekomme
kann?

Hi Christian,
k.A. warum

Selection.ShapeRange.Height = Selection.ShapeRange.Height * 0.2
Selection.ShapeRange.Width = Selection.ShapeRange.Width * 0.2

ein viel zu kleines Bild liefert. Deshalb musste ggfs. mit

Sub tt()
Dim Bild
For Each Bild In ActiveSheet.Shapes
 MsgBox "Bild.Name: " & Bild.Name & " Height= " & Bild.Height & " Width= " & Bild.Width
Next Bild
End Sub

die Werte für 100 und 20 Prozent notieren und ins eigentliche Makro einsetzen. Wenn das makro angepasst ist, weist du es deM Bild zu (Rechtsklick aufs Bild, MakroZuweisen auswählen)

Option Explicit
Dim Klein As Boolean

Sub Makro1()
With Selection
 If Klein = True Then
 .ShapeRange.LockAspectRatio = msoTrue
 .ShapeRange.Height = 143.25
 .ShapeRange.Width = 191.25
 Else
 .ShapeRange.LockAspectRatio = msoTrue
 .ShapeRange.Height = 29.25
 .ShapeRange.Width = 38.25
 End If
 Klein = Not (Klein)
 Range("A12").Select
End With
End Sub

Gruß
Reinhard

Hallo Christian.

Wenn du das Makro schon programmiert hast, musst du nur noch das Bild rechts anklicken und dann auf Makro zuweisen gehen. Dann kannst du dein Makro in diese Klick-Routine reinkopieren.

Gruß Alex

Codeänderung
Hi Christian,
nimm diesen Code:

Option Explicit
Dim Klein As Boolean

Sub Bild3()
Call Groesse("Picture 3")
End Sub

Sub Groesse(Bildname As String)
Application.ScreenUpdating = False
ActiveSheet.Shapes(Bildname).Select
With Selection
 If Klein = True Then
 .ShapeRange.LockAspectRatio = msoTrue
 .ShapeRange.Height = 143.25
 .ShapeRange.Width = 191.25
 Else
 .ShapeRange.LockAspectRatio = msoTrue
 .ShapeRange.Height = 29.25
 .ShapeRange.Width = 38.25
 End If
 Klein = Not (Klein)
 ActiveCell.Select 'Range("A12").Select
End With
Application.ScreenUpdating = True
End Sub

Gruß

Reinhard

Hallo Reinhard
Besten Dank für die rasche Antwort.

Nun der Code funktioniert noch nicht 100%ig.
Wenn ich dem Bild nun das Makro zuweise und ausführe, wird das Bild kleiner. beim nächsten klick sollte es wieder gross werden. das get leider noch nicht.

Was mir nicht klar ist: wann wird Klein auf True oder False gesetzt?
und was bewirkt der Code: „Klein = Not (Klein)“?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Christian,

Nun der Code funktioniert noch nicht 100%ig.
Wenn ich dem Bild nun das Makro zuweise und ausführe, wird das
Bild kleiner. beim nächsten klick sollte es wieder gross
werden. das get leider noch nicht.

bei mit klappt er, lade doch mal ne kleine Beispieldatei hoch, z.B. hier:

http://rapidshare.de/

Was mir nicht klar ist: wann wird Klein auf True oder False
gesetzt?

durch „Klein = Not (Klein)“

und was bewirkt der Code: „Klein = Not (Klein)“?

probier das mal imCode:

msgbox Klein
Klein = Not (Klein)"
msgbox Klein

Gruß
Reinhard

Hallo Reinhard

Klein = Not (Klein) setzt Klein von „“ auf „-1“
Das würde heissen False wird zu True wenn ich nicht ganz im Dunkeln sitze. doch ich glaube hier ist irgend wo der Felher, nur wo?

Anbei der Link zur Testdatei mit dem verwendeten Code:
http://rapidshare.de/files/31569616/Bild_Test.xls

Besten Dank
Gruss
Christian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Klein = Not (Klein) setzt Klein von „“ auf „-1“
Das würde heissen False wird zu True wenn ich nicht ganz im
Dunkeln sitze. doch ich glaube hier ist irgend wo der Felher,
nur wo?

Nein, der Fehler lag an dir, sorry :smile:
Zuoberst im Modul muss stehen:

Option Explicit
Dim Klein As Boolean

Das haste vergessen einzugeben.

Wegen den Wahrheitswerten, probier mal in Excel:

=(5=2)*1
bzw
=(5=5)*1

und in VBa:

msgbox (5=2)*1
msgbox (5=5)*1

Gruß
Reinhard

Anbei der Link zur Testdatei mit dem verwendeten Code:
http://rapidshare.de/files/31569616/Bild_Test.xls

Besten Dank
Gruss
Christian

Hallo Reinhard

Oh man wie konnte ich das nur übersehen.
Besten Dank für die Hilfe, es klappt jetzt wunderbar.

Gruss
Christian