Anzeige
Archiv - Navigation
1324to1328
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
Diagramm in User form anzeigen lassen
15.08.2013 07:58:53
mikey
Hallo
anbei ein Beispiel das ich gefunden habe, ich werde es für mein vorhanden
ein wenig ändern.
Ich habe jedoch 2 Probleme wo ich nicht dahinterkomme wie es funktionieren soll.
1.) Ich habe schon eine Tabelle die in einer anderen Registerkarte 2 ist, diese möchte ich ohne
das sich die Originalgröße des original Diagrammes ändert in Tabelle 1 als Userform anzeigen lassen.
2.) Ich möchte die Größe selbst bestimmen können mit Ändern der Userform größe
komme ich nicht so hin wie ich es brauche, vielleicht gibt es da einen makro
code der etwas abgeändert gehört.
https://www.herber.de/bbs/user/86858.xls

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm in User form anzeigen lassen
15.08.2013 10:27:00
Beverly
Hi,
versuche es mal so:
Sub Bild_Anzeigen()
Dim Diagramm As Object
Set Diagramm = Worksheets("Tabelle1").ChartObjects(1).Chart
With UserForm8
.Image1.Width = Diagramm.Parent.Width
.Image1.Height = Diagramm.Parent.Height
.Width = .Image1.Width + 15
.Height = .Image1.Height + 40 + .cmdOK.Height
End With
Dateiname = ThisWorkbook.Path & Application.PathSeparator & "diagramm.gif"
Diagramm.Export Filename:=Dateiname, FilterName:="GIF"
UserForm8.Image1.Picture = LoadPicture(Dateiname)
End Sub


Anzeige
AW: Diagramm in User form anzeigen lassen
15.08.2013 15:33:14
mikey
Hi,
das funktioniert schon ganz gut, es wird nicht mehr das original bild vergrößert.
jedoch vergrößert sich nur die user form nicht aber das diagramm in der userform.
Anbei die Biespieldatei.
Nach dem drücken des OK Buttons in der Userform kommt immer ein Fehler mit folgender Meldung.
Fehler beim Kompilieren Variable nicht definiert. Und zwar in der Userform der Code
Dann wird

Private Sub cmdOK_Click() gelb hinterlegt.
Option Explicit

Private Sub cmdOK_Click()
Kill Dateiname
Unload Me
End Sub

Private Sub UserForm_Activate()
Bild_Anzeigen
End Sub

https://www.herber.de/bbs/user/86864.xls

Anzeige
AW: Diagramm in User form anzeigen lassen
15.08.2013 17:12:07
Beverly
Hi,
die Variable Dateiname ist nicht belegt, deshalb der Fehler. Deklariere sie im Modul1 als Public:
Public Dateiname As String

Bei mir wird das Diagramm im UserForm-Image in der selben Größe wie das Diagramm im Tabellenblatt dargestellt.
Userbild


AW: Diagramm in User form anzeigen lassen
15.08.2013 17:18:30
mikey
Hallo
danke für die schnelle antwort, super gelöst.
mein problem ist jedoch das ich das Diagramm in der userform vergrößert haben möchte und
das original diagramm nicht. nur leider habe ich keine Idee wie das funktionieren soll,
gibt es auch eine andere möglichkeit als das gif format zum konvertieren bsp. bmp oder so?
vielleicht hast du ja einen tipp für mich.
lg

Anzeige
AW: Diagramm in User form anzeigen lassen
15.08.2013 17:45:35
Beverly
Hi,
und wie groß soll das Diagramm angezeigt werden?
In diesem Codeteil wird die Breite und Höhe des Bildsteuerelementes im UserForm festgelegt - derzeit die selbe Breite wie im Tabellenblatt:
      .Image1.Width = Diagramm.Parent.Width
.Image1.Height = Diagramm.Parent.Height
und in diesem Codeteil (aus meinem Beitrag) wird die Breite des UserFoms in Abhängigkeit von der Breite des Bildsteuerelementes festgelegt (+ 15 damit links und rechts eine kleine freie Fläche bleibt; kann man auch weglassen wenn das Userform die selbe Breite wie das Steuerelement haben soll)
      .Width = .Image1.Width + 15
Hier wiederum wird die Höhe des UserForms in Abhängigkeit von der Höhe des Bildsteuerelementes und der Höhe des CommandButtons + 40 (damit ein kleiner Rand unterhalb frei bleibt) festgelegt:
      .Height = .Image1.Height + 40 + .cmdOK.Height

Diese Werte musst du an deine Wunschvorstellungen anpassen. Allerdings musst du dann auch die Position des CommandButton per code festlegen, denn er sollte ja sicher nicht mitten im Diagramm liegen. Das kannst du mit den folgenden beiden (zusätzlichen) Zeilen lösen:
      .cmdOK.Top = .Image1.Top + .Image1.Height + 10
.cmdOK.Left = .Width / 2 - .cmdOK.Width / 2

Man kann auch andere Dateiformate außer GIF verwenden - das musst du im Exportcode nur entsprechend festlegen (z.B. als JPG):
    Dateiname = ThisWorkbook.Path & Application.PathSeparator & "diagramm.JPG"
Diagramm.Export Filename:=Dateiname, FilterName:="JPG"


Anzeige
AW: Diagramm in User form anzeigen lassen
15.08.2013 18:15:48
mikey
hallo
danke für deine ausführliche erklärung ich komme einfach nicht zurecht, vielleicht verstehe ich das
ganze nicht so wie du es mir erklärt hast. ich habe hier ein diagramm, das eine größe von 10 x 20 cm hat
wenn ich auf den command button oder auf ein symbol klicke möchte ich gerne das eine userform
erscheint und das diagramm dann auf eine größe von 20 x 40 cm angezeigt wird ohne das das originald
diagramm vergrößert wird. d.h in der userform soll ein größeres diagramm angezeigt werden.
ich habe mit einigen größen einstellungen herumprobiert, das führt aber nicht zum gewünschten ergebnis.
Es ändert sich nur die größe der userform nicht aber das Diagramm in der Userform.
vielleicht kannst du mir hier einen tipp geben.
https://www.herber.de/bbs/user/86870.xls

Anzeige
AW: Diagramm in User form anzeigen lassen
15.08.2013 18:23:42
Beverly
Hi,
du musst unter der Eigenschaft PictureSizeMode des Bildsteuerelementes fmPictureSizeModeZoom einstellen und mit dem folgenden Code wird das Daigramm dann in der richtigen Größe dargestellt:
Sub Bild_Anzeigen()
Dim Diagramm As Object
Set Diagramm = Worksheets("Tabelle1").ChartObjects(1).Chart
With UserForm8
.Image1.Width = Diagramm.Parent.Width * 2
.Image1.Height = Diagramm.Parent.Height * 2
.Width = .Image1.Width + 15
.Height = .Image1.Height + 40 + .cmdOK.Height
.cmdOK.Top = .Image1.Top + .Image1.Height + 10
.cmdOK.Left = .Width / 2 - .cmdOK.Width / 2
End With
Dateiname = ThisWorkbook.Path & Application.PathSeparator & "diagramm.gif"
Diagramm.Export Filename:=Dateiname, FilterName:="GIF"
UserForm8.Image1.Picture = LoadPicture(Dateiname)
End Sub


Anzeige
AW: Diagramm in User form anzeigen lassen
15.08.2013 22:06:54
mikey
hallo
danke für den makro code habe ihn gleich eingefügt und die einstellungen so wie du es beschrieben hast
verändert, was soll ich sagen es klappt einfach nicht es ändert sich nur die userform in der größe nicht aber das diagramm selbst.
Ich kann die Userform mit X schließen kein Problem sobald ich es mit ok bestätige, kommt wieder die
fehlermeldung: Fehler beim Kompilieren Variable nicht definiert, habe den tipp von früher ausprobiert leider funktioniert das auch nicht mehr.
Es scheint schwieriger zu sein als ich dachte, anbei die Beispieldatei.
https://www.herber.de/bbs/user/86872.xls
vielleicht kannst du mir nochmals helfen.

Anzeige
AW: Diagramm in User form anzeigen lassen
16.08.2013 08:57:25
Beverly
Hi,
1. nicht die Eigenschaft PictureSizeMode des UserForms sondern des Bildsteuerelementes! ändern
2. im Modul1 fehlt die Deklaration von Dateiname im allgemeinen Modul
Wenn du nicht das ausführst was man dir vorschlägt, musst du dich auch nicht wundern, wenn es nicht funktioniert.


AW: Diagramm in User form anzeigen lassen
16.08.2013 13:44:18
mikey
hallo
danke für die tipps nur mal ne frage muss ich jetzt ein neues bildsteuerungselement einfügen
denn wenn ich im entwicklermodus auf das diagramm klicke ist dort keine Option des Picture Size Mode.
Also habe ich einfach ein Active X Bildsteuerungselement eingefügt und habe die Eigenschaften
so wie du es oben beschrieben hast verändert.
Leider weiß ich immer noch nicht wie du das mit den Bildsteuerungselement meinst bzw. dem Modul 1
Bin ja noch Excel VBA Anfängein.
https://www.herber.de/bbs/user/86884.xls
danke für deine hilfe

Anzeige
AW: Diagramm in User form anzeigen lassen
16.08.2013 14:25:56
Beverly
Hi,
wozu ein neues Bildsteuerelement? Du hast doch im UserForm bereits eins - Image1. Markiere es und suche die Eigenschaft PictureSizeMode - bei dir ist eingestellt fmPicturSizeModeClip - ändere diese wie schon geschrieben.
Füge im Modul1 ganz oben die Zeile Public Dateiname As String ein - wie schon geschrieben.
Ich würde meinen, das ist auch als Anfänger nicht so schwierig, wenn man genau liest was geschrieben steht und es dann auch so ausführt. ;-)
https://www.herber.de/bbs/user/86885.xls


Anzeige
AW: Diagramm in User form anzeigen lassen
16.08.2013 14:53:18
mikey
hallo
na klar, das hatte ich total vergessen in der Userform, man oft steht man wirklich auf der Leitung
sorry.
funktioniert super nur warum ist es so unscharf, kann mir nicht vorstellen das wenn man es 2 x zoomt
das es so unscharf aussieht würde es gerne wie das original diagramm haben sonst kann ich ja keinen
text mehr lesen und die Linien lesen. Kann man hier abhilfe schaffen oder sind die texte immer wenn man zoomt unscharf?
danke

AW: Diagramm in User form anzeigen lassen
16.08.2013 15:41:34
Beverly
Hi,
durch das Vergrößern des abgespeicherten Bildes entsteht leider dieser Effekt.
Man könnte höchstens das Diagramm vor dem Exportieren im Tabellenblatt vergrößern und anschließen wieder zurücksetzen:
Sub Bild_Anzeigen()
Dim Diagramm As Object
Dim dblBreite As Double
Dim dblHoehe As Double
Set Diagramm = Worksheets("Tabelle1").ChartObjects(1).Chart
With Diagramm.Parent
dblHoehe = .Height
dblBreite = .Width
.Height = dblHoehe * 2
.Width = dblBreite * 2
Dateiname = ThisWorkbook.Path & Application.PathSeparator & "diagramm.bmp"
End With
Diagramm.Export Filename:=Dateiname, FilterName:="bmp"
With UserForm8
.Image1.Width = dblBreite * 2
.Image1.Height = dblHoehe * 2
.Width = .Image1.Width + 15
.Height = .Image1.Height + 40 + .cmdOK.Height
.cmdOK.Top = .Image1.Top + .Image1.Height + 10
.cmdOK.Left = .Width / 2 - .cmdOK.Width / 2
End With
UserForm8.Image1.Picture = LoadPicture(Dateiname)
With Diagramm.Parent
.Height = dblHoehe
.Width = dblBreite
End With
End Sub


AW: Diagramm in User form anzeigen lassen
16.08.2013 20:36:43
mikey
hi
danke das ist ein super lösungsweg, vielleicht kannst du mir nochmals helfen ich habe
nämlich verschiedene Diagramme in einer anderen Tabelle, den Pfad und die Makros habe ich schon
angepasst, leider kommt jetzt immer eine Fehlermeldung: Fehler beim kompilieren mehrdeutiger Name
und beim anderen Command Button.: Objektdarstellung durch Active X Komponente nicht möglich.
habe extra eine 2te userform erstellt und auch das image von 1 auf 2 umbenannt auch der makro code wurde angepasst.
Wäre es vielleicht zusätzlich möglich das wenn man das diagramm mit ok in der userform oder mit x schließt das dann auch der Dateiname diagramm.bmp gelöscht wird.
https://www.herber.de/bbs/user/86889.xlsm

AW: Diagramm in User form anzeigen lassen
17.08.2013 01:33:13
Beverly
Hi,
Der Fehler kommt deshalb weil es 2 mal die selbe Prozedur Bild_anzeigen gibt.
Beschreibe doch einmal ganz genau was du machen willst. Wie und wann soll denn welches Diagramm angezeigt werden? Ein 2. UserForm brauchst du - denke ich mal - nicht. Sicher kann man das alles im selben UserForm machen, aber dazu müsste man eben genau wissen, was du erreichen willst.


AW: Diagramm in User form anzeigen lassen
17.08.2013 02:47:40
mikey
hallo
danke für die Info, ich habe im Tabellenblatt 2, 3 Diagramme die ich gerne
mittels klick auf ein Symbol in Tabelle 1 angezeigt bekommen möchte.
das erste Symbol soll diagramm 1 anzeigen
das 2te Symbol soll diagramm 2 anzeigen
das 3te Symbol soll diagramm 3 anzeigen.
Das ganze habe ich ca. noch 3 mal in dem Excel File. d.h.
diagramme in tabelle 2 sollen in tabelle 1 angezeigt werden.
Diagramme in tabelle 4 sollen in Tabelle 3 angezeigt werden.
Diagramme in Tabelle 6 sollen in Tabelle 5 angezeigt werden.
dann erspare ich mir nämlich das hin und herspringen in den Registerkarten.
wenn möglich alles in der mitte des Bildschirms, bzw. kann ich das glaub ich in der userform
einstellen.
Dann soll wenn ich die Userform schließe egal um welches diagramm sich dabei handelt das bild
das für das vergrößern erstellt worden ist wieder gelöscht werden, damit es nicht mehr in dem
ordner ist wo sich das diagramm befindet.
achso ich dachte es wäre einfacher wenn man 3 userformen erstellt, für jedes diagramm eines.

AW: Diagramm in User form anzeigen lassen
17.08.2013 09:27:01
Beverly
Hi,
ein UserForm kann man immer wieder benutzen und wenn man es mit Unload Me schließt, dann werden alle geladenen Daten wieder gelöscht und das UserForm in den Urzustand zurückgesetzt.
Das im Ordner gespeicherte Bild kann man sofort löschen, nachdem es ins UserForm geladen wurde - das muss nicht erst mit dem Button auf dem UserForm passieren.
https://www.herber.de/bbs/user/86891.xls


AW: Diagramm in User form anzeigen lassen
17.08.2013 14:16:44
mikey
hallo
super danke das makro das du erstellt hast funktioniert einwandfrei danke vielmals.
Jedoch wenn ich den Code und die Userform in meine Tabelle kopiere, exportiere und den makro code
ausführe schreibt mir excel eine Fehlermeldung heraus nämlich
Laufzeitfehler.
Das Element mit dem angegebenen Namen konnte nicht gefunden werden.
Wenn ich auf depuggen klicke wird diese Zelle gelb markiert
Set Diagramm = Worksheets(strTab).ChartObjects(strDia).Chart
Ich habe es schon statt mit worksheets mit sheets getestet doch leider hilft das auch nichts
habe auch den Schreibschutz der zelle
Hoffe es hat damit nichts zutun das die diagramme jetzt in der 3ten tabelle sind und in der
ersten angezeigt werden sollen oder doch?
Denn meine Registerkarten haben nämlich alle unterschiedliche namen
einmal mahnungen einmal rechnungen usw.
Habe es schon mit diesem Makro code versucht doch leider vergebens
strDia = "Dia_Nutzen"
Sheets(strDia).Activate
vielleicht kannst du mir noch einen tipp geben wie das diagramm trotz unterschiedlicher registerkarten namen
angezeigt werden kann.
https://www.herber.de/bbs/user/86894.xlsm
danke
lg

AW: Diagramm in User form anzeigen lassen
17.08.2013 16:36:11
Beverly
Hi,
die Prozedur Sub Bild_Anzeigen(strTab As String, strDia As String) verlangt den Tabellenamen und den Diagrammnamen - wenn eins von beiden bzw. die Kombination aus beiden nicht exisitert, dann kommt der Laufzeitfehler. In deinem Code:
Sub AbgerundetesRechteck1_Klicken()
Bild_Anzeigen "tabelle1", "Diagramm 3"
End Sub
wird der Tabellename "tabelle1" und der Diagrammname "Diagramm 3" übergeben - in Tabelle1 gibt es jedoch kein "Diagramm 3", folglich der Fehler. Du musst deinen Code also wie folgt ändern:
Sub AbgerundetesRechteck1_Klicken()
Bild_Anzeigen "Diagramme", "Diagramm 3"
End Sub
da sich deine Diagramme im Tabellenblatt "Diagramme" befinden.
Die Tabelle muss nicht aktiv sein, um ein Diagramm anzuzeigen, es muss nur die richtige Kombination aus Tabellenname und Diagrammname an die Prozedur übergeben werden.


AW: Diagramm in User form anzeigen lassen
18.08.2013 01:17:40
mikey
hallo
alles klar, danke für die rasche aufklärung war völlig auf den falschen holzweg.
Ich habe noch eine kurze frage leider klappt das mit meinen von mir ersttellten
3D Diagrammen nicht richtig, d.h.
sie werden verzehrt und unscharf angezeigt. Das ganze hat auch nichts mit den zoom zu tun sprich
mit welchen wert multipliziert wird.
Ich dachte zuerst wäre es das bmp format und wollte auf png wechseln nur png nimmt excel nicht an
denn dann kommt die fehlermeldung keine datei gefunden. Kein problem zurück zu bmp.
aber ich mußte in der Userform8 --> Image 1 den Picture Size Mode auf PictureSizeModeClip einstellen mit allen anderen Werten hatte ich unscharfe Diagramme und verzerrungen.
Nun wollte ich gerne wissen ob es möglich ist das die Userform größer dargestellt wird als das Diagramm
sonst sehe ich leider den OK Button nicht mehr. Ich habe mehrere verschiedene Einstellungen gelöscht und dazugeschrieben nur leider ändert sich dadurch nichts. Oder ist es möglich das die Userform in Vollbild dargestellt wird.?
Sub Bild_Anzeigen(strTab As String, strDia As String)
Dim Diagramm As Object
Dim dblBreite As Double
Dim dblHoehe As Double
Set Diagramm = Worksheets(strTab).ChartObjects(strDia).Chart
With Diagramm.Parent
dblHoehe = .Height
dblBreite = .Width
.Height = dblHoehe
.Width = dblBreite
Dateiname = ThisWorkbook.Path & Application.PathSeparator & "diagramm.bmp"
End With
Diagramm.Export Filename:=Dateiname, FilterName:="bmp"
With UserForm8
.Image1.Width = dblBreite
.Image1.Height = dblHoehe
.Width = .Image1.Width + 15
.Height = .Image1.Height + 15 + .cmdOK.Height
.cmdOK.Top = .Image1.Top + .Image1.Height + 10
.cmdOK.Left = .Width / 2 - .cmdOK.Width / 2
End With
UserForm8.Image1.Picture = LoadPicture(Dateiname)
With Diagramm.Parent
.Height = dblHoehe
.Width = dblBreite
End With
Kill Dateiname
UserForm8.Show
End Sub

AW: Diagramm in User form anzeigen lassen
18.08.2013 08:22:11
Beverly
Hi,
zum Schließen des UserForms benötigst du keinen Button - es geht auch das Schließen-Kreuz.


AW: Diagramm in User form anzeigen lassen
18.08.2013 10:36:28
mikey
Hallo
super, danke für die Info, wenn ich ihn einfach lösche bekomme ich aber eine Fehlermeldung.
kann ich die cmdOK. Codes aus dem Makro entfernen und den Fehler zu beheben.
danke
lg

AW: Diagramm in User form anzeigen lassen
18.08.2013 19:59:57
Beverly
Hi,
da es den Schalter nicht mehr gibt, musst du diesen Codeteil ändern:
    With UserForm8
.Image1.Width = Diagramm.Parent.Width * 2
.Image1.Height = Diagramm.Parent.Height * 2
.Width = .Image1.Width + 15
.Height = .Image1.Height + 30
End With


AW: Diagramm in User form anzeigen lassen
19.08.2013 09:31:00
mikey
Hallo
super danke für die info, jedoch bekomme ich jetzt komischerweise einen ganz anderen Fehler
und zwar.: Laufzeitfehler 481
Ungültiges Bild.
Wenn ich auf depuggen klicke wird dieser code gelb hinterlegt
UserForm8.Image1.Picture = LoadPicture(Dateiname)
aber ich habe sonst nichts verändert anbei der gesamte makro code.
Public Dateiname As String
Sub Bild_Anzeigen(strTab As String, strDia As String)
ActiveSheet.Unprotect Password:="test"
Dim Diagramm As Object
Dim dblBreite As Double
Dim dblHoehe As Double
Set Diagramm = Worksheets(strTab).ChartObjects(strDia).Chart
With Diagramm.Parent
dblHoehe = .Height
dblBreite = .Width
.Height = dblHoehe
.Width = dblBreite
Dateiname = ThisWorkbook.Path & Application.PathSeparator & "diagramm.bmp"
End With
Diagramm.Export Filename:=Dateiname, FilterName:="bmp"
With UserForm8
.Image1.Width = Diagramm.Parent.Width
.Image1.Height = Diagramm.Parent.Height
.Width = .Image1.Width + 15
.Height = .Image1.Height + 30
End With
UserForm8.Image1.Picture = LoadPicture(Dateiname)
With Diagramm.Parent
.Height = Diagramm.Parent.Height
.Width = Diagramm.Parent.Width
End With
Kill Dateiname
UserForm8.Show
ActiveSheet.Protect Password:="test", DrawingObjects:=False, Contents:=True, Scenarios:= _
True, AllowFiltering:=True
End Sub

AW: Diagramm in User form anzeigen lassen
19.08.2013 10:23:35
Beverly
Hi,
kann ich so leider nicht nachvollziehen, da müsstest du schon mal deine Mappe mit dem jetzigen Stand hochladen.


AW: Diagramm in User form anzeigen lassen
19.08.2013 12:06:46
mikey
Hallo
danke für die info, das diagramm funktioniert, nur leider habe ich ein Problem mit dieser Arbeitsmappe
wenn ich dort was ändere und es geht um den kopierschutz der tabelle, wird das diagramm nicht
angezigt und er meldet mir eben falsches Bild usw.
habe ein neues thema gepostet, danke nochmals für deine hilfe.

10 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige