Anzeige
Archiv - Navigation
1564to1568
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

Grafikplatzierung falsch

Grafikplatzierung falsch
04.07.2017 12:12:37
J-
Aus mir unerklärlichen Gründen wird die Grafik bei A39 platziert. Wieso?
    ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
With Selection
.Top = Range(act_start_clm & src_start_row - 1).Top 'A22
.Left = Range(act_start_clm & src_start_row - 1).Left  'A22
.Width = Range(act_start_clm & src_start_row - 1 & ":" & act_end_clm & src_start_row -  _
1).Width 'A22:J22
.Height = Range(act_start_clm & src_start_row - 1 & ":" & act_start_clm & src_end_row +  _
19).Height 'A22:J41
End With   

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Grafikplatzierung falsch
04.07.2017 13:54:54
mmat
Hallo,
was steht denn zum Zeitpunkt der Ausführung in act_start_clm und src_start_row drin?
vg, MM
AW: Grafikplatzierung falsch
04.07.2017 14:34:08
J-
act_start_clm ist ein String, drin steht "A"
src_start_row ist ein int, drin steht 23
Beide Werte werden beim Aufruf der function über den Übergabeparameter übergeben.
AW: Grafikplatzierung falsch
04.07.2017 15:39:24
mmat
Naja, dann wundert mich nicht, dass das Ergebnis dich wundert ... :-)
Ich kann nur vermuten, dass dein Chart irgendwo eine nicht sichtbare Oberkante hat.
Ich würde mal mit den Werten (Zeile /Spalte des Ranges) spielen und gucken ob und wie die Grafik wandert. Vielleicht bringt das ja die entscheidende Erkenntnis.
Im übrigen hat Beverly recht, man muss nicht alles selektieren. Probier mal:

dim x as object
set x=ActiveSheet.Shapes.AddChart2(201, xlColumnClustered)
With x
.Top = Range(act_start_clm & src_start_row - 1).Top 'A22
.Left = Range(act_start_clm & src_start_row - 1).Left  'A22
.Width = Range(act_start_clm & src_start_row - 1 & ":" & act_end_clm &  _
src_start_row -  _
1).Width 'A22:J22
.Height = Range(act_start_clm & src_start_row - 1 & ":" & act_start_clm &  _
src_end_row +  _
19).Height 'A22:J41
End With   

Anzeige
AW: Grafikplatzierung falsch
04.07.2017 14:21:59
Beverly
Weshalb nicht einfach so, wenn die dir Zellen bekannt sind?
    With ActiveSheet.Shapes.AddChart2(201, xlColumnClustered)
.Top = Range("A22").Top 'A22
.Left = Range("A22").Left  'A22
.Width = Range("A22:J41").Width 'A22:J22
.Height = Range("A22:J41").Height 'A22:J41
End With


AW: Grafikplatzierung falsch
04.07.2017 14:39:40
J-
Das ist nur ein Beispiel. Über die function werden durch mehrfachen Aufruf mehrere Grafiken erzeugt, deren Werte über Übergabeparameter übergeben werden. Deshalb muss ich Variablen benutzen.
Übrigens, auch wenn ich direkt "A22" als Range angebe, ist die platzierung falsch...
Anzeige
AW: Grafikplatzierung falsch
04.07.2017 14:57:02
Beverly
Dann hat Excel anscheinend nicht ausreichend Zeit für die Positionierung. Versuche es mal so:
    Dim chrDia As Chart
Set chrDia = ActiveSheet.Shapes.AddChart(0, 0, 0, 0).Chart
With chrDia
.ChartType = xlColumnClustered
.Parent.Top = Range("A22").Top 'A22
.Parent.Left = Range("A22").Left  'A22
.Parent.Width = Range("A22:J41").Width 'A22:J22
.Parent.Height = Range("A22:J41").Height 'A22:J41
End With
DoEvents


AW: Grafikplatzierung falsch
04.07.2017 15:13:26
J-
Okay, ich bin jetzt nicht unbedingt die beste in VBA. Kann ich auch dies einsetzen (da ich nicht unbedingt ein Chart-Object anlegen will):
ActiveSheet.Shapes.AddChart(0, 0, 0, 0).Chart.Select
With Selection
.ChartType = xlColumnClustered
.Parent.Top = Range("A22").Top 'A22
.Parent.Left = Range("A22").Left  'A22
.Parent.Width = Range("A22:J41").Width 'A22:J22
.Parent.Height = Range("A22:J41").Height 'A22:J41
End With
Oder kann/soll/muss in der ersten Zeile das "chart" vor "select" raus?
Anzeige
AW: Grafikplatzierung falsch
04.07.2017 15:20:33
Beverly
Auf Select soll und kann zu 99% aller Fälle verzichtet werden - das siehst du in meinem Code, denn der Cursor ist kein Hund, der mittels "Select" auf dem Tabellenblatt herumgeführt werden muss.
Wenn es kein Diagramm ist, welches erstellt werden soll, dann definiere das Objekt eben als den Typ, der erstellt werden soll. Ansonsten verstehe ich nicht was du meinst, da mit deinem (und meinem bezüglich Select bereinigten) Code ja ein Diagramm erstellt wird.


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige