Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
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
Inhaltsverzeichnis

Grafik in unterschiedlich großen Zellen zentrieren

Grafik in unterschiedlich großen Zellen zentrieren
13.12.2019 19:28:14
bassi
Hallo miteinander,
ich würde gern Grafiken immer in der Mitte einer Zelle positionieren.
Die Zellen sind unterschiedlich hoch, aber immer gleich breit.
Folgenden Code habe ich dazu schon mal gefunden. Ich habe ihn zurecht geklopft soweit ich konnte. Leider passt das so aber nun nicht mit den unterschiedlichen Zellhöhen.
Sub GrafikEinfügen()
Dim objPicture As Picture
With ActiveCell
Set objPicture = .Parent.Pictures.Insert(Tabelle6.[DI3].Value)
objPicture.Top = .Top - 3
objPicture.Left = .Left + 18
objPicture.Height = 20
objPicture.Width = 20
End With
End Sub

Wie könnte ich erreichen, dass meine Grafik immer in der Zellmitte erscheint?
Viele Grüße
bassi

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Grafik in unterschiedlich großen Zellen zentrieren
14.12.2019 10:55:53
Nepumuk
Hallo bassi,
dir ist aber schon klar dass damit nur eine Verknüpfung des Bildes einfügst?
Sub GrafikEinfügen()
    Dim objPicture As Picture
    
    With ActiveCell
        
        Set objPicture = .Parent.Pictures.Insert(Tabelle6.Range("DI3").Value)
        
        objPicture.Height = .Height / 2
        objPicture.Width = .Width / 2
        objPicture.Top = .Top + .Height / 2 - objPicture.Height / 2
        objPicture.Left = .Left + .Width / 2 - objPicture.Width / 2
        
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Grafik in unterschiedlich großen Zellen zentrieren
14.12.2019 19:16:07
bassi
Hallo Nepumuk,
oh mein Gott, nein das war mir nicht klar und passt dann auch rein gar nicht zu dem was ich erreichen wollte.
:(
Ich habe also nun wieder ganze 3 Probleme:
1) Im Grunde möchte ich die immer gleiche Grafik in die Mitte von unterschiedlich großen (aktiven) Zellen per Button setzen und gleichzeitig
2) auf das Bild einen Hyperlink setzen. (also es sollte nur dieses original Excel-Fenster aufgehen)
3) Das nächste schwierige daran ist, dass das Blatt geschützt sein muss und nur für die Aktion des Hyperlink setzen, diese eine immer gleiche Spalte (AB) entsperrt werden soll. (in nebenliegende Zellen darf nicht rein kopiert werden können)
Nachdem ich an der Sache nun schon über eine Woche rum doktere, dachte ich ja zumindest ein Problem gelöst zu haben...
*Haare rauf
Viele Grüße
bassi
Anzeige
AW: Grafik in unterschiedlich großen Zellen zentrieren
14.12.2019 19:41:01
Nepumuk
Hallo bassi,
alles hab ich nicht verstanden.
So ins blaue geschossen:
Public Sub GrafikEinfügen()
    Dim objShape As Shape
    
    With ActiveCell
        
        Set objShape = .Parent.Shapes.AddPicture(Filename:=Tabelle6.Range("DI3").Text, _
            LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
            Left:=0, Top:=0, Width:=.Width / 2, Height:=.Height / 2)
        
        objShape.Top = .Top + .Height / 2 - objShape.Height / 2
        objShape.Left = .Left + .Width / 2 - objShape.Width / 2
        
        Call .Hyperlinks.Add(Anchor:=objShape, Address:="H:\1214\test.txt", ScreenTip:="Klick")
        
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Grafik in unterschiedlich großen Zellen zentrieren
14.12.2019 20:12:54
bassi
Hallo Nepumuk,
vielen lieben Dank für Deine Hilfe.
Die Grafik landet nun tatsächlich in der Mitte der Zelle. Aber sie passt sich an die Größe der Zelle an. Sie wird also bei kleinen Zellen zusammengedrückt.
Wenn ich den Code richtig deute, dann sollte auch eigentlich das Fenster für die Auswahl des Hyperlinks erfolgen. Dieses Fenster erscheint jedoch gar nicht.
Ich habe eine kleine Minimappe gebastelt. Vielleicht ist das so etwas einfacher?
https://www.herber.de/bbs/user/133775.xlsm
Viele Grüße
bassi
AW: Grafik in unterschiedlich großen Zellen zentrieren
15.12.2019 14:53:27
Nepumuk
Hallo bassi,
so ok?
Option Explicit

Public Sub GrafikEinfügen2()
    Dim objShape As Shape
    Dim objFileDialog As FileDialog
    Dim strPath As String
    
    Set objFileDialog = Application.FileDialog(msoFileDialogFilePicker)
    
    With objFileDialog
        .AllowMultiSelect = False
        With .Filters
            If .Count > 0 Then Call .Delete
            Call .Add("All files", "*.*")
        End With
        .InitialFileName = "R:\"
        If .Show Then strPath = .SelectedItems(1)
    End With
    
    Set objFileDialog = Nothing
    
    If strPath <> vbNullString Then
        
        With ActiveCell
            
            Set objShape = .Parent.Shapes.AddPicture(Filename:=Tabelle1.Range("C2").Text, _
                LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
                Left:=0, Top:=0, Width:=.Width, Height:=.Height)
            
            objShape.Top = .Top + .Height / 2 - objShape.Height / 2
            objShape.Left = .Left + .Width / 2 - objShape.Width / 2
            
            Call .Hyperlinks.Add(Anchor:=objShape, Address:=strPath, ScreenTip:=Dir$(strPath))
            
        End With
        Set objShape = Nothing
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Grafik in unterschiedlich großen Zellen zentrieren
15.12.2019 14:58:49
bassi
Hallo Nepumuk,
hahaaa... das ist ja der Hammer. Besser als gedacht. Sehr sehr Cool :)
Wie könnte man das zusammendrücken der Grafik bei zu schmalen Zellen noch abändern?
Vielleicht könnte man das so lösen, dass die eine Standardgröße bekommt?
Viele Grüße
bassi
AW: Grafik in unterschiedlich großen Zellen zentrieren
15.12.2019 15:34:12
Nepumuk
Hallo bassi,
ändere diese Zeile:
Set objShape = .Parent.Shapes.AddPicture(Filename:=Tabelle1.Range("C2").Text, _
    LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
    Left:=0, Top:=0, Width:=.Width, Height:=.Height)

so:
Set objShape = .Parent.Shapes.AddPicture(Filename:=Tabelle1.Range("C2").Text, _
    LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
    Left:=0, Top:=0, Width:=Application.Max(.Width, 66), _
    Height:=Application.Max(.Height, 46))

Die Minimalwerte für die Höhe und Breite kannst du selber anpassen.
Gruß
Nepumuk
Anzeige
AW: Grafik in unterschiedlich großen Zellen zentrieren
15.12.2019 15:46:48
bassi
Hallo Nepumuk,
habe getestet - aber egal welche der Zahlen ich wie auch immer ändere, die Grafik zeigt sich davon ungerührt. Sie richtet sich weiterhin nach der Zellgröße und wird auch wie zuvor zusammengequetscht.
Viele Grüße
bassi
AW: Grafik in unterschiedlich großen Zellen zentrieren
15.12.2019 15:50:51
Nepumuk
Hallo bassi,
in meinem Test ist das nicht passiert. Keine Ahnung was da bei dir nicht funktioniert.
Gruß
Nepumuk
AW: Grafik in unterschiedlich großen Zellen zentrieren
15.12.2019 15:58:10
bassi
Hallo Nepumuk,
das verstehe ich nicht. Selbst wenn ich als Werte eine 1 eingebe ändert sich garnichts. Die Grafik ist weiterhin groß.

Width:=Application.Max(.Width, 1), _
Height:=Application.Max(.Height, 1))
Mache ich was falsch?
Viele Grüße
bassi
Anzeige
AW: Grafik in unterschiedlich großen Zellen zentrieren
15.12.2019 16:02:29
Nepumuk
Hallo bassi,
dann ist die Zelle größer als der Minimalwert. Application.Max liefert den größeren Wert zurück.
Gruß
Nepumuk
Juhu... es klappt :)
15.12.2019 16:13:12
bassi
Hallo Nepumuk,
ahh... Verstehe.
Hab das nun quasi andersrum gemacht.
Set objShape = .Parent.Shapes.AddPicture(Filename:=Tabelle1.Range("C2").Text, _
LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, _
Left:=0, Top:=0, Width:=Application.Min(.Width, 20), _
Height:=Application.Min(.Height, 20))
Die Zellhöhe habe ich standardmäßig (sozusagen als Minimum - die großen Zellen entstehen durch Zeilenumbruch) so eingestellt, dass die Grafik gleichmäßig wirkt.
Das sollte so gehen denke ich.
Ich bedanke mich herzlichst für diese wundervolle Hilfe und wünsche Dir einen schönen 3.Advent noch :)
Viele Grüße
bassi
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige