Datenüberprüfung Liste stört Bildeinfüge Makro
15.05.2024 16:55:50
Dominic_Schweiz
Ich habe einen Fehler, den ich nicht ganz verstehe.
Ich habe ein Makro, welches sauber funktioniert, bis ich im selben Blatt die Drop-Down-Liste anklicke um einen Wert auszuwählen. Sobald ich dies tu, funktioniert mein Makro sehr komisch:
Bild wird nicht mehr skaliert, wird nicht mehr an den richtige Ort kopiert.
Dies gilt dann für alle Buttons, welche jeweils den gleichen selben Makro-Code haben.
Auch wenn ich dann eine andere Zelle auswähle, nachdem ich die Drop-Down-Liste ausgewählt habe, tritt dieser Effekt ein.
Macht das Klicken auf eine solche Drop-Down-Liste im Hintergrund etwas?
Ist hier was bekannt oder gibt es sogar eine Lösung. Hier mein Makro um die Bilder einzufügen.
Dies wäre natürlich echt super, bekommen wir eine Lösung hin...
Sub Schaltfläche6_Klicken()
Dim ws As Worksheet
Dim img As Shape
Dim cellRange As Range
Dim imgWidth As Double
Dim imgHeight As Double
Dim imgRatio As Double
Dim imgCellRatio As Double
' Das aktive Blatt setzen
Set ws = ActiveSheet
' Bereich setzen, in den das Bild eingefügt werden soll
Set cellRange = ws.Range("A37:D49")
' Überprüfen, ob das Clipboard ein Bild enthält (Format 9)
If Application.ClipboardFormats(1) = 9 Then
' Bild einfügen und das eingefügte Bildobjekt referenzieren
ws.Paste
Set img = ws.Shapes(ws.Shapes.count)
' Größe des Bildes anpassen, um in die verbundenen Zellen zu passen
With cellRange
imgWidth = .Width
imgHeight = .Height
End With
' Seitenverhältnis des Bildes erhalten
imgRatio = img.Width / img.Height
imgCellRatio = imgWidth / imgHeight
' Bildgröße anpassen, um in die verbundenen Zellen zu passen und das Seitenverhältnis beizubehalten
If imgRatio > imgCellRatio Then
' Wenn das Bild breiter ist als die Zelle, skaliere die Höhe entsprechend
img.LockAspectRatio = msoTrue
img.Width = imgWidth
Else
' Andernfalls, skaliere die Breite entsprechend
img.LockAspectRatio = msoTrue
img.Height = imgHeight
End If
' Bild in die Zelle A37 verschieben
img.Top = cellRange.Top
img.Left = cellRange.Left
Else
MsgBox "Das Format in der Zwischenablage entspricht nicht einem Bildformat (Format 9)."
End If
End Sub
Anzeige