Microsoft Excel

Herbers Excel/VBA-Archiv

Grafiken an bestimmter Stelle

Betrifft: Grafiken an bestimmter Stelle von: Werner
Geschrieben am: 14.08.2004 10:53:53

Hallo, da ich hoffe, dass mir auch diesmal schnell und kompetent geholfen wird, trage ich mal mein Problem vor:

Ich möchte in Abhängigkeit von einem Zellwert bestimmte Grafiken an bestimmten Stellen auf dem Tabellenblatt erscheinen lassen.

Beispiel:

J1 = 1, dann soll im Bereich A1:A3 Grafik 1 erscheinen
J1 = 2, dann soll im Bereich A1:A3 Grafik 2 erscheinen

K1 = 1, dann soll im Bereich B1:B3 Grafik 1 erscheinen
K1 = 2, dann soll im Bereich B1:B3 Grafik 2 erscheinen

L1 = 1, dann soll im Bereich C1:C3 Grafik 1 erscheinen
L1 = 2, dann soll im Bereich C1:C3 Grafik 2 erscheinen

Ist sowas möglich ? Besonders toll wäre es, wenn die Grafiken bei jedem Erscheinen um einen zufällig gewählten Winkel gedreht erscheinen würden.

Ich freue mich auf eure Antworten und danke schon jetzt herzlich dafür!!

Gruß aus Schleswig-Holstein

Werner

  


Betrifft: AW: Grafiken an bestimmter Stelle von: K.Rola
Geschrieben am: 14.08.2004 12:59:53

Hallo,

die Frage kommt mir bekannt vor.
Grafik ist ein weitläufiger Begriff, um welche Art Grafik gehts denn? Nicht jede Grafik
läßt sich unter E97 drehen.
Wo kommen die Grafiken her, sind sie schon in der Datei oder müssen sie zur Laufzeit geladen werden?
Habe die Grafiken schon die Maße, dass sie in den Zellbereich passen oder sollen sie skaliert werden, ggf. um den Preis, dass die Proportionen nicht mehr stimmen?

Fragen über Fragen....

Gruß K.Rola


  


Betrifft: AW: Grafiken an bestimmter Stelle von: Ramses
Geschrieben am: 14.08.2004 13:10:49

Hallo

hier mal ein Script.

Die Grafiken müssen im Namensfeld den Namen "Bild 1" und "Bild 2" haben.

Rotieren lässt sich die Grafik nicht, weil die Bildbereich beim drehen sonst über den zu positionierenden Bereich hinausragen, wenn die Grafik nicht skaliert wird.
Aber dieses Gimmick übersteigt den Aufwand hier im Forum.

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh1 As Shape, sh2 As Shape
Set sh1 = ActiveSheet.Shapes("Picture 1")
Set sh2 = ActiveSheet.Shapes("Picture 2")
Select Case Target.Address(False, False)
    Case "J1", "K1", "L1"
        ActiveSheet.Shapes("Picture 1").Visible = False
        ActiveSheet.Shapes("Picture 2").Visible = False
    Select Case Target.Address(False, False)
        Case "J1"
            If Target.Value = 1 Then
                With sh1
                    .Visible = True
                    .Top = 0
                    .Left = 0
                    .Height = ([a1].RowHeight + [a2].RowHeight + [a3].RowHeight) * 5.67
                    .Width = [a1].ColumnWidth * 5.67
                End With
            End If
            If Target.Value = 2 Then
                With sh2
                    .Visible = True
                    .Top = 0
                    .Left = 0
                    .Height = ([a1].RowHeight + [a2].RowHeight + [a3].RowHeight) * 5.67
                    .Width = [a1].ColumnWidth * 5.67
                End With
            End If
        Case "K1"
            If Target.Value = 1 Then
                With sh1
                    .Visible = True
                    .Top = 0
                    .Left = [a1].ColumnWidth * 5.67
                    .Height = ([a1].RowHeight + [a2].RowHeight + [a3].RowHeight) * 5.67
                    .Width = [a1].ColumnWidth * 5.67
                End With
            End If
            If Target.Value = 2 Then
                With sh2
                    .Visible = True
                    .Top = 0
                    .Left = [a1].ColumnWidth * 5.67
                    .Height = ([a1].RowHeight + [a2].RowHeight + [a3].RowHeight) * 5.67
                    .Width = [a1].ColumnWidth * 5.67
                End With
            End If
        Case "L1"
        If Target.Value = 1 Then
                With sh1
                    .Visible = True
                    .Top = 0
                    .Left = ([a1].ColumnWidth + [B1].ColumnWidth) * 5.67
                    .Height = ([a1].RowHeight + [a2].RowHeight + [a3].RowHeight) * 5.67
                    .Width = [a1].ColumnWidth * 5.67
                End With
            End If
            If Target.Value = 2 Then
                With sh2
                    .Visible = True
                    .Top = 0
                    .Left = ([a1].ColumnWidth + [B1].ColumnWidth) * 5.67
                    .Height = ([a1].RowHeight + [a2].RowHeight + [a3].RowHeight) * 5.67
                    .Width = [a1].ColumnWidth * 5.67
                End With
            End If
    End Select
End Select
End Sub


Gruss Rainer


 

Beiträge aus den Excel-Beispielen zum Thema "Grafiken an bestimmter Stelle"