Bilder sollen bewegbar sein, aber nicht skalierbar/rotieren

Moderator: ModerationP

Bilder sollen bewegbar sein, aber nicht skalierbar/rotieren

Beitragvon hugo2922 » 13. Jul 2018, 15:00

Hallo zusammen,

ich brauche bitte Eure Hilfe, Google half mir bisher nicht weiter hierzu:

Ich möchte gerne in einem Arbeitsblatt mehrere kleine Bilder einfügen. Der spätere Benutzer soll diese Bilder auf dem Arbeitsblatt bewegen können, jedoch nicht die Größe und auch nicht die Ausrichtung/Drehrichtung verändern können.

Bisher habe ich es mit dem Blattschutz probiert, der verhindert jedoch auch, dass man die Bilder bewegen kann.

Weiß jemand Rat? Eventuell lässt sich das mit VBA realisieren?

Zusätzlich wäre es schön, wenn man die Bilder dann zwar anklicken und bewegen kann, aber dann auch optisch die 8 weißen "Zieh"-Punkte unsichtbar wären, an denen man sonst das Bild in die Breite, Länge, etc. ziehen könnte.

Besten Dank,
Hugo
Benutzeravatar
hugo2922
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 218
Registriert: 28. Mär 2013, 00:09

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon Flotter Feger » 13. Jul 2018, 16:11

Hallöchen,

daran hab ich mich selbst schon versucht ... hab es bisher aber selbst nicht hinbekommen ... :oops:
Falls du eine Möglichkeit findest, sag mir bitte Bescheid, Danke schon mal. :wink:
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1812
Registriert: 24. Okt 2016, 16:40

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon werni » 13. Jul 2018, 18:04

Hallo Hugo

Hab dir mal ein Beispiel gebastelt.
Tabelle2 kannst du verstecken
Tabelle1 musst du das Blatt mit Passwort schützen
Das VBA-Projekt musst du auch mit Passwort schützen
Jetzt allerdings ist noch alles offen
Für User die keine xlsm Dateien herunterladen hier noch etwas Code
Option Explicit

Code: Alles auswählen
Private Sub Workbook_Open()
    Tabelle2.[A1:A2] = 0
    UserForm1.ScrollBar1.Value = 0
    UserForm1.ScrollBar2.Value = 0
    Tabelle1.Shapes.Range(Array("Micky")).Left = 0
    Tabelle1.Shapes.Range(Array("Micky")).Top = 0
    UserForm1.Show
End Sub

Und in der UF mit zwei Scollbalken
Code: Alles auswählen
Option Explicit

Private Sub ScrollBar1_Change()
Dim Horiz As Integer
Horiz = Tabelle2.[A1]
    If Horiz > UserForm1.ScrollBar1.Value Then
        Tabelle1.Shapes.Range(Array("Micky")).IncrementLeft -Horiz
    Else
        Tabelle1.Shapes.Range(Array("Micky")).IncrementLeft Horiz
    End If
Tabelle2.[A1] = UserForm1.ScrollBar1.Value
End Sub
Private Sub ScrollBar2_Change()
Dim Verti As Integer
Verti = Tabelle2.[A2]
    If Verti > UserForm1.ScrollBar2.Value Then
        Tabelle1.Shapes.Range(Array("Micky")).IncrementTop -Verti
    Else
        Tabelle1.Shapes.Range(Array("Micky")).IncrementTop Verti
    End If
Tabelle2.[A2] = UserForm1.ScrollBar2.Value
End Sub


Gruss werni
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Wer hat meine Schwiegermutter mit dem Staubsauger in die Wüste gelockt?
Benutzeravatar
werni
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2855
Registriert: 21. Dez 2009, 21:42
Wohnort: Ennenda GL

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon Flotter Feger » 13. Jul 2018, 20:17

Hallöchen,

ist nicht wirklich das, was sich der TS erhofft hat ... da wette ich mal drauf ... aber doch recht nett ... 8-)
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1812
Registriert: 24. Okt 2016, 16:40

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon hugo2922 » 14. Jul 2018, 22:08

Hallo werni, Danke für das ausführliche Lösungsbeispiel, das hat mich sehr gefreut!
Es funktioniert auch einwandfrei.

Bloß geht es mir darum, dass der User weiterhin Bilder direkt mit der Maus, also mit Drag & Drop, bewegen kann. Somit fällt das mit den beiden von Dir vorgeschlagenen Achsen-Knöpfen leider aus.

Hättest Du oder jemand anders noch eine andere Lösungsidee?
Benutzeravatar
hugo2922
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 218
Registriert: 28. Mär 2013, 00:09

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon hugo2922 » 14. Jul 2018, 23:12

Noch eine eigene Idee für einen Kompromiss: Eventuell könnte man ja statt Drag & Drop (was schon weiterhin die schönste Lösung wäre), folgendes probieren: Ich sperre alle Bilder wie bisher, versehe sie aber mit einem Makro, wenn man auf sie linksklickt, dann hängt sich das Bild unter den Mauszeiger (falls das überhaupt geht); Man bewegt die Maus, das Bild bewegt sich mit und mit einem zweiten Linksklick lässt man das Bild wieder fallen, an neuer Position?

Ich wüsste bloß leider keine Idee wie man das anstellt, weiß jemand Rat?
Benutzeravatar
hugo2922
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 218
Registriert: 28. Mär 2013, 00:09

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon hugo2922 » 15. Jul 2018, 13:26

Noch eine andere Lösungsidee: Vielleicht könnte man es ja auch zunächst zulassen, dass der User ein Bild / Grafik in seiner Größe oder dreht. Doch sobald er es tut, könnte man diese Veränderung vielleicht abfangen und rückgängig machen?

Mit welchem Befehl könnte man das laufend überwachen?

Danke für Hilfsideen!
Benutzeravatar
hugo2922
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 218
Registriert: 28. Mär 2013, 00:09

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon werni » 15. Jul 2018, 15:20

Hallo Hugo

Wenn es nur darum geht, die Bilder in Grösse und Rotation zurück zu setzen, dann .....
Dieser Code ins Modul des Arbeitsblattes
Code: Alles auswählen
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ActiveSheet.DrawingObjects.Select
        Selection.ShapeRange.Rotation = 0
        Selection.ShapeRange.ScaleHeight 1, True, 1
        Selection.ShapeRange.ScaleHeight 1, True, 1
    [A1].Select
End Sub


Edit: Man kann den Code auch ohne Select schreiben:
Code: Alles auswählen
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With ActiveSheet.DrawingObjects
        .ShapeRange.Rotation = 0
        .ShapeRange.ScaleHeight 1, True, 1
        .ShapeRange.ScaleHeight 1, True, 1
    End With
 End Sub


Gruss werni
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Wer hat meine Schwiegermutter mit dem Staubsauger in die Wüste gelockt?
Benutzeravatar
werni
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2855
Registriert: 21. Dez 2009, 21:42
Wohnort: Ennenda GL

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon snb » 15. Jul 2018, 16:16

Warum erstellt der TS keine Beispieldatei ?
Zuletzt geändert von snb am 15. Jul 2018, 16:52, insgesamt 1-mal geändert.
snb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6127
Registriert: 25. Sep 2014, 16:37

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon werni » 15. Jul 2018, 16:29

@ SNB

Das frage ich mich auch. Er mag den Usern keine Kreativität gönnen.

Gruss werni
Wer hat meine Schwiegermutter mit dem Staubsauger in die Wüste gelockt?
Benutzeravatar
werni
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2855
Registriert: 21. Dez 2009, 21:42
Wohnort: Ennenda GL

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon Flotter Feger » 15. Jul 2018, 17:04

Hallöchen,

noch einmal deutlicher ... ein Shape per Drag&Drop zu verschieben, das funktioniert nur im Edit-Modus (rechtsklick --> Ziehmarken sind sichtbar --> Maus kann das Shape fassen und ziehen).

Befindet sich Excel aber im Edit-Modus, läuft kein Code. Die Codeausführung wird während dieser Zeit ausgesetzt. ABER ... kein Code ... kein Mousemove ... sollte klar sein, oder ?

Kann also nicht gehen ... kannst du gerne ausprobieren ... klicke doppellt in eine Zelle ... Excel wechselt in den Edit-Modus ... sämtlicher Code ist gestoppt.
Die einzige Methode, die eventuell zum Ziel führen könnte ... zumindest rein theoretisch ... ich hab es bisher aber nicht hinbekommen, was ja generell mal nichts heißt :doubt: ... wäre ein VB-Timer, der immer wieder kurz die Tabelle aktiviert ... der ist dir aber zu kompliziert ... ist ja auch OK. :razz:

Was gehen würde, du könntest ein ActiveX-Image-Control verwenden, das reagiert auf MouseDown ... MouseMove ... MouseUp. Das Control kann zwar Transparenz darstellen, ist aber kein echtes Shapes.
Was aber nicht weiter schlimm ist ... und ein Image-Control, kann man weder drehen, noch in der Größe ändern, wenn man es nicht vorher programmiert. Aber das dürfte ja alles schon bekannt sein.
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1812
Registriert: 24. Okt 2016, 16:40

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon hugo2922 » 15. Jul 2018, 19:34

Sabina, das ist ja vielleicht die Lösung!

Also es muss ja auch gar kein Shape sein. Tatsächlich muss es ja auch nur eine Grafik sein. Bisher habe ich nicht mit einem ActiveX-Image Control gearbeitet. Ich habe es mal eingefügt und kriege es auch hin, ein Bild darin anzuzeigen. Aber das Pixel Sprite an sich soll ja "freigestellt" sein? Und ja, die "Ziehmarken" sind beim ActiveX-IC nicht sichtbar ohne Edit-Modus. Bloß wie kann ich das Bild dann per Drag & Drop verschieben?
Benutzeravatar
hugo2922
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 218
Registriert: 28. Mär 2013, 00:09

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon Flotter Feger » 15. Jul 2018, 20:06

Hallöchen,

ein Control namens IMAGE1 auf die Tabelle und dann den Code in die Tabelle schreiben.
Du klickst auf das Control, hältst die Maus gedrückt, und ziehst sie weiter ... erst wenn das Control nachzieht, kannst du die Maus loslassen.
Code: Alles auswählen
Dim Xpos As Single
Dim Ypos As Single
Const Raster As Single = 0.75

Public Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Xpos = X
    Ypos = Y
End Sub

Public Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Button = 1 Then
    With Image1
       .MousePointer = 15
       .Left = .Left + (X - Xpos) * Raster
       .Top = .Top + (Y - Ypos) * Raster
    End With
End If
End Sub

Nur mal ganz groß runtergeschrieben ... dazu findest du im Netz genug.
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1812
Registriert: 24. Okt 2016, 16:40

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon hugo2922 » 16. Jul 2018, 20:37

Okay Danke, ich mach mal weitere Tests dazu und lese mich weiter ein.
Benutzeravatar
hugo2922
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 218
Registriert: 28. Mär 2013, 00:09

Re: Bilder sollen bewegbar sein, aber nicht skalierbar/rotie

Beitragvon hugo2922 » 31. Jul 2018, 07:07

Guten Morgen Sabina,

ich habe jetzt Deinen Code ausführlicher getestet und eine Beispieldatei angehängt. Zunächst aber einmal ein dickes Dankeschön, dass Du weiterhin mir bei der Lösungshilfe suchst =)

Der Code funktioniert soweit, die geklickte Grafik als ActiceX bewegt sich brav unter dem Mauszeiger, zickt aber unter Office365 ganz schön, dann springt die Grafik wild umher bis sie am Zielort ankommt.

Ich habe schon ein bisschen an dem Parameter "Const Raster As Single = 0.75" herumgeschraubt, aber noch keine Besserung hingekriegt. Auch mittels Application.ScreenUpdating hört zwar das Springen auf, die Grafik wird dann aber immer wieder auch ausgeblendet, was auch merkwürdig aussieht.

Sabine, hast Du noch Ideen wie man den Code etwas anders gestalten kann oder anderweitig die beschriebenen Symptome ausmerzen kann?

Danke,
Hugo
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
hugo2922
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 218
Registriert: 28. Mär 2013, 00:09

Nächste

Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Black-Mage, snb und 16 Gäste