Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
944to948
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
944to948
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Diagramm in UF anpassen

Diagramm in UF anpassen
02.02.2008 17:03:40
Walter
Hallo Zusammen,
habe folgendes Makro:

Private Sub UserForm_Activate()
Dim UserForm
'--------------- für Bildschirmanpassung --------------------------------------
Dim intY, intLast, intNext As Integer
Dim hwndForm As Long, hwndMenu As Long
With Me
.StartUpPosition = 0
.Top = 0
.Left = 0
.Height = GetDeviceCaps(GetDC(0&), HORZRES)
.Width = GetDeviceCaps(GetDC(0&), VERTRES)
End With
ReleaseDC 0, GetDC(0&)
hwndForm = FindWindow(GC_CLASSNAMEMSEXCELFORM, Me.Caption)
If hwndForm  0 Then
hwndMenu = GetSystemMenu(hwndForm, 0)
If hwndMenu  0 Then DeleteMenu hwndMenu, SC_MOVE, MF_BYCOMMAND
End If
Dim Diagramm, Dateiname
Set Diagramm = ActiveSheet.ChartObjects(1).Chart
Diagramm.Parent.Width = Image1.Width
Diagramm.Parent.Height = Image1.Height
Dateiname = ThisWorkbook.Path & Application.PathSeparator & _
"Diagramm.gif"
' diagramm.Export Filename:=Dateiname, FilterName:="GIF"
Image1.Picture = LoadPicture(Dateiname)
End Sub


Habe mir dies im Forum gefunden, funktioniert auch soweit allerdings
wird das Diagramm nicht ganz angezeigt, wei kann ich dies durchführen.
mfg walter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm in UF anpassen
02.02.2008 17:16:21
Nepumuk
Hallo Walter,
wie wird nicht ganz angezeigt? Passt es nicht in das Image-Control?
Gruß
Nepumuk

Auf der UF
02.02.2008 17:22:00
Walter
Hallo Nepumuk,
wenn ich die UF aufrufe, wird das Diagramm nicht kompl. auf der UF angezeigt, beende ich die UF,
wird plötzlich das Diagramm auf der Tabelle kleiner ?
mfg Walter

AW: Auf der UF
02.02.2008 17:40:00
Nepumuk
Hallo Walter,
1. Das Bild des Diagramms wird in einem Image-Control angezeigt (Image1.Picture = LoadPicture(Dateiname)). Du passt zwar das Userform an die Bildschirmgröße an, aber nicht dieses Control.
2. Du passt das Diagramm an die größe des Controls an (Diagramm.Parent.Width = Image1.Width / Diagramm.Parent.Height = Image1.Height) Dadurch bekommt es natürlich die größe des Image-Controls. Da müsstest du dir die ursprüngliche Größe merken und nach dem export wieder auf diese zurücksetzen.
Also:
1. Wenn das Diagramm die gesamt Userform ausfüllen soll, dann kannst du das Bild auch ins Userform selbst laden und benötigst kein Image-Control.
2. Du musst das Diagramm nicht anpassen, wenn du die Eigenschaft PictureSizeMode auf fmPictureSizeModeStretch stellst.
Gruß
Nepumuk

Anzeige
AW: Auf der UF
02.02.2008 17:56:00
Walter
Hallo Nepumuk,
danke für die Unterstützung habe als erstes die Zeilen rausgenommen:
' Diagramm.Parent.Width = Image1.Width
' Diagramm.Parent.Height = Image1.Height
Das Diagramm bleibt jetzt in der Tabelle wie es war.
Habe auch dies geändert:
PictureSizeMode auf fmPictureSizeModeStretch
Das Diagramm soll auf keinen Fall die gesamte UF ausfüllen, sonder nur im oberen Bereich dargestellt
sein.
Habe nur das Problem das die Schrift nich so deutlich ist.
mfg Walter

AW: Auf der UF
02.02.2008 18:21:00
Nepumuk
Hallo Walter,
dann pass doch da Image-Control in der größe an. Beispiel:
' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Declare Function GetSystemMetrics Lib "user32.dll" ( _
    ByVal nIndex As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function GetSystemMenu Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32.dll" ( _
    ByVal hMenu As Long, _
    ByVal nPosition As Long, _
    ByVal wFlags As Long) As Long

Private Const MF_BYCOMMAND As Long = &H0&
Private Const SC_MOVE As Long = &HF010&
Private Const GC_CLASSNAMEMSEXCELFORM = "ThunderDFrame"
Private Const SM_CXSCREEN = 0&
Private Const SM_CYSCREEN = 1&

Private Sub UserForm_Activate()
    Dim hwndForm As Long, hwndMenu As Long
    With Me
        .StartUpPosition = 0
        .Top = 0
        .Left = 0
        .Width = GetSystemMetrics(SM_CXSCREEN) * 0.75
        .Height = GetSystemMetrics(SM_CYSCREEN) * 0.75
    End With
    hwndForm = FindWindow(GC_CLASSNAMEMSEXCELFORM, Me.Caption)
    If hwndForm <> 0 Then hwndMenu = GetSystemMenu(hwndForm, 0)
    If hwndMenu <> 0 Then DeleteMenu hwndMenu, SC_MOVE, MF_BYCOMMAND
    With Image1
        .Left = 10
        .Width = Me.Width - 25
        .Top = 10
        .Height = Me.Height / 2 - 25
    End With
End Sub

Damit sollte das Image-Control die obere Hälfte des Userforms ausfüllen.
Gruß
Nepumuk

Anzeige
Danke Nepumuk, -)
02.02.2008 18:55:48
Walter
Hallo Nepumuk,
bin zwar nicht ganz zufrieden, kann aber damit leben, schönes Wochenende,
mfg Walter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige