Bilder mittels Steuerelement einfügen
#21
Hallo André,

Puh, das wird mir jetzt schon etwas zu kompliziert. Ich hab ein bisschen rumexperimentiert und hab folgendes zustande gebracht:
Das Bild besitzt mit dem untenstehenden Code nun eine Größe die passt. Jedoch bring ich es einfach nicht in die Mitte der Zelle (also zentriert)

Kannst du mir das in Form eines Codes erklären?

Hier der Code:
Code:
Private Sub CommandButton1_Click()
Dim fd As FileDialog
   Dim Pfad As String
   Dim chosenFile As String
   Pfad = "C:\Test\"
   Set fd = Application.FileDialog(msoFileDialogFilePicker)
   With fd
       .AllowMultiSelect = False
       .InitialFileName = Pfad
       .Filters.Add "Bilddateien", "*.jpg"
       If .Show = -1 Then
           chosenFile = .SelectedItems(1)
            With Sheets("Bilder")
               Cells(Cells(Rows.Count, 2).End(xlUp).Row + 1, 1).Activate
               ActiveSheet.Pictures.Insert(chosenFile).Select
               Selection.Name = "Grafik " & Cells(Rows.Count, 2).End(xlUp).Row + 1
               With Selection
                   .ShapeRange.Width = 1
                   .Width = 120
                   .Height = 120
                 End With
               ActiveCell.Offset(0, 1).Value = "Grafik " & ActiveCell.Row
            End With
       End If
   End With
End Sub
Danke!
LG Chris
Top
#22
Hallo Chris,

Zum zentrieren brauchst Du, wie ich schon schrieb, die Eigenschaften Top und Left der aktuellen Zelle und dann musst Du noch die Randbreite dazurechnen. Wenn Du in Breite und Höhe mit festen Werten arbeitest, sollte das doch auch kein Problem sein - da brauchst Du die ganzen Berechnungen nicht.

.Top = ActiveCell.Top + x
.Left = ActiveCell.Left + y

Du kannst Dir in der Überwachung oder als MsgBox die Werte Width und Height für die Zelle ausgeben lassen. Davon ziehst Du die 120 ab, teilst den Rest durch 2 und schreibst den Wert dann für x bzw. y hin.

.ShapeRange.Width = 1

kannst Du wegnehmen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Chris-89
Top
#23
Hallo André,

Danke dir für deine Bemühungen, es hat funktioniert.
Das mit den Berechnungen und dem zentrieren ist mir einfach zu hoch aber damit kann ich leben.
Ich hab das Bild jetzt dort wo ich es haben will (quasi zentriert) Füge ich nun ein Bild ein welches andere Abmessungen hat dann ist dieses nicht mehr zentriert.
Dazu bräuchte man diese Berechnungen, das kann man aber denke ich nicht lösen.

Eine Sache hab ich noch bevor wir das Thema erledigen können.
Der Code funktioniert perfekt mittels dem CommandButton im Tabellenblatt "BILDER"
Ich möchte nun den CommandButton ins Tabellenblatt "2.FABRIKATE" verschieben, die Funktion bzw. der Code soll jedoch so arbeiten wie jetzt - sprich im Tabellenblatt "BILDER"

Verstehst du?

LG
Chris
Top
#24
Hallo Chris,

wenn Du jedem Bild beim Import die Abmaße 120 x 120 gibst, wieso ist ein anderes Bild dann nicht mehr zentriert? Kann es am Seitenverhältnis liegen? Siehe dazu u.a. mein Hinweis im code von Beitrag #8

So hoch ist doch die Berechnung gar nicht, insbesondere nicht, wenn Du mit festen Werten für das einzufügende Bild rechnest. Ich hab die Theorie dazu zuletzt in Beitrag #22 beschrieben.
.Top = ActiveCell.Top + (ActiveCell.Height-120)/2
usw. Voraussetzung ist, wie gesagt, dass Dein Bild auch 120x120 ist und die Zelle größer und Aktiv. Wenn die Zelle nicht so groß ist, müsstest Du sie erst noch anpassen.

Wenn Du den code von einem anderen Blatt aus startest, kannst Du z.B. vor dem Einfügen auf das Blatt "Bilder" wechseln und anschließend zurück. Damit man das nicht merkt, kannst Du auch erst die Bildschirmaktualisierung mit
Application.ScreenUpdating=False
unterbinden - vergiss aber nicht, sie nach dem zurück wechseln wieder auf true zu setzen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Chris-89
Top
#25
Hallo André,

Vielen, vielen Dank, das hat funktioniert....

LG Chris
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste