Anzeige
Archiv - Navigation
836to840
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
836to840
836to840
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wie Userform nach Absturz neuladen?

Wie Userform nach Absturz neuladen?
11.01.2007 16:40:11
Till
Hallo Leute,
ich hab auf einer Userform eine Listbox untergebracht, in die Excel aus einem anderen geöffneten Arbeitsblatt Daten einliest (7 Spalten und ca. 500 Zeilen).
Nun ist das eine Menge Holz. Beim Ausführen des Einlesevorganges (stoß ich durch eine ComboBox-Auswahl an) verschwindet die Userform, Excel bleibt aber weiterhin aktiv geöffnet (siehe Taskmanager). Da ich die Userform aber auf dem gesammten Bildschirm anzeige, ist dann alles scheinbar "gekillt".
Wie bekomme ich Excel dazu:
1. Entweder den Fehler zu vermeiden (z.B. langsameres Einlesen der Listbox-Werte)
oder
2. die Userform wieder neu zu laden.
Dass mein Code eigentlich funktioniert sehe ich darin, dass ich mit geöffnetem VBA-Editor das problematische Makro ausführen kann und beim 2. Ausführen dann auch wirklich die gefüllte Listbox mit Werten angezeigt bekomme.
Aber ich will ja nicht immer im Debug-Modus sein ;-)
Ich hatte mir eigentlich gedacht (da ich den Fehler meines eigentlichen Codes nicht finden kann), dass ich Excel (also meine Userform, da alles andere ausgeblendet ist) wieder neu laden kann mit so etwas hier:
Do
If ListBox1.Value = "" Then
Userform.Show
End If
Loop Until Userform.Show = True
Aber das "verträgt" Excel nicht.
Weiß jemand einen Rat?
Danke schon mal!
Gruß Till

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

Betreff
Datum
Anwender
Anzeige
AW: Wie Userform nach Absturz neuladen?
11.01.2007 16:52:47
Rudi
Hallo,
warum verschwindet die UF? Muss doch einen Grund haben.
Wie liest du die Daten ein?
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
AW: Wie Userform nach Absturz neuladen?
11.01.2007 16:57:27
Oberschlumpf
Hi Till
Ich vermute, es liegt daran, weil das Einlesen der Daten in die Listbox nun mal eine Weile braucht.
Nach dem Einlesen wird das UF doch wieder normal angezeigt, oder?
(auch wenn du ne Zeit lang das Gefühl hast, Excel ist abgestürzt)
Wenn dem so ist, dann verwende an den Stellen im Code, wó die Listbox gefüllt wird, den Befehl
DoEvents
und vielleicht noch
Userformname.Repaint
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Wie Userform nach Absturz neuladen?
11.01.2007 17:12:00
Till
Vielen Dank erst mal für die 2 schnellen Antworten.
Also die Hilfe von Oberschlumpf brachte keine merkliche Änderung. Wieder "Absturz!
Vielleicht hilft ja mein Code, wie ich die Listbox einlese:

Private Sub UserForm_activate()
On Error Resume Next
Dim MyList(600, 7) 'as array type: 600 Zeilen und 7 Spalten
Dim R As Integer
With ListBox1
.ColumnCount = 7
.ColumnWidths = 75
'.Width = 230
End With
With Worksheets("Wertetabelle") 'ActiveSheet
For R = 4 To 600
MyList(R, 0) = .Range("E" & R + 1)
MyList(R, 1) = .Range("D" & R + 1)
MyList(R, 2) = .Range("K" & R + 1)
MyList(R, 3) = .Range("X" & R + 1)
MyList(R, 4) = .Range("L" & R + 1)
MyList(R, 5) = .Range("V" & R + 1)
MyList(R, 6) = .Range("T" & R + 1)
Next R
End With
'populate the list box
ListBox1.List = MyList
'Verkehr.Repaint (hat leider nicht geholfen)
End Sub

Hoffe Ihr habt noch einen anderen Lösungsansatz?
Danke!
Gruß Till
Anzeige
AW: Wie Userform nach Absturz neuladen?
11.01.2007 21:35:49
Rudi
Hallo,
imho wird aus Tabelle relativ langsam gelesen. Also erst mal alles in ein Array.
Weiterhin ist das Konstrukt Range("A" &Zeile) relativ langsam. Cells(Zeile,Spalte) ist schneller. Versuchs mal so:

Private Sub UserForm_activate()
On Error Resume Next
Dim MyList(600, 7) 'as array type: 600 Zeilen und 7 Spalten
Dim R As Integer
Dim vntTmp
With ListBox1
.ColumnCount = 7
.ColumnWidths = 75
'.Width = 230
End With
With Worksheets("Wertetabelle") 'ActiveSheet
vntTmp = .Range("A1:X600")
End With
For R = 4 To 600
MyList(R, 0) = vntTmp(R + 1, 5)
MyList(R, 1) = vntTmp(R + 1, 4)
MyList(R, 2) = vntTmp(R + 1, 11)
MyList(R, 3) = vntTmp(R + 1, 24)
MyList(R, 4) = vntTmp(R + 1, 12)
MyList(R, 5) = vntTmp(R + 1, 22)
MyList(R, 6) = vntTmp(R + 1, 20)
Next R
End With
'populate the list box
ListBox1.List = MyList
'Verkehr.Repaint (hat leider nicht geholfen)
End Sub

Gruß
Rudi
Anzeige
AW: Wie Userform nach Absturz neuladen?
ransi
HALLO Till
... (z.B. langsameres Einlesen der Listbox-Werte)
Ich glaube das Gegenteil ist der Fall.
Fülle deine Listbox mal so:


Option Explicit
Private Sub UserForm_Initialize()
Dim LST
Dim start As Double
start = Timer
LST = Range("A1:G1000")
With ListBox1
    .Clear
    .ColumnCount = 7
    .List = LST
End With
MsgBox Timer - start
End Sub


ransi
Anzeige
AW: Wie Userform nach Absturz neuladen?
11.01.2007 17:24:00
Ramses
Hallo Ransi
Schau dir mal die Bereiche an von WO er die Daten einliest.
Da bin ich gerade noch darauf gestossen.
Aus Performancegründen würde ich allerdings mal probieren den gesamten Bereich von E4-T600 als RowSource zuzuweisen
MyList.RowSource = "Wertetabelle!E4:T600"
und die Spalten die er nicht braucht auf "ColumWidth = 0" zu setzen
Gruss Rainer
AW: Wie Userform nach Absturz neuladen?
ransi
HAllo Rainer
Hab ich jetzt auch gesehen.
Hatte gepostet ohne vorher zu aktualisieren.
ransi
AW: Wie Userform nach Absturz neuladen?
12.01.2007 09:38:25
Till
Hallo Leute,
sorry dass ich jetzt erst antworte.
Den Tipp von Rainer hatte ich auch mal berücksichtigt...leider mit dem gleichen Ergebnis.
Die Programmierung sah da so aus.

Private Sub UserForm_activate()
On Error Resume Next
Dim intCounter As Integer
'Dim intSheetCounter As Integer
'Laden der Wertetabelle in Listbox
Dim AM As Object                                           ' Arbeitsmappe als Objekt
Me.ListBox1.Clear                                          ' Leeren der Listbox, falls vorher gefüllt
ListBox1.ColumnCount = 8
'Zuweisen der Spaltenbreite in Pt
'1 cm ~ 28,3 Pt
Me.ListBox1.ColumnWidths = "0; 0; 0; 80; 80; 80; 80; 80" ' Bestimmung der Spaltenbreite
'For intSheetCounter = 1 To 1 'Worksheets.Count
For Each AM In Application.Workbooks                    ' suche geöffnete Arbeitsmappen
With Sheets("Wertetabelle")
For intCounter = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(intCounter, 1) <> "" Then
ListBox1.AddItem .Cells(intCounter, 1).Value
ListBox1.List(ListBox1.ListCount - 1, 1) = .Cells(intCounter, 2).Value
' Ab hier kann beliebig ergänzt werden.  Bitte Nummerierung beachten.
ListBox1.List(ListBox1.ListCount - 1, 2) = .Cells(intCounter, 3).Value
ListBox1.List(ListBox1.ListCount - 1, 3) = .Cells(intCounter, 4).Value
ListBox1.List(ListBox1.ListCount - 1, 4) = .Cells(intCounter, 5).Value
ListBox1.List(ListBox1.ListCount - 1, 5) = .Cells(intCounter, 6).Value
ListBox1.List(ListBox1.ListCount - 1, 6) = .Cells(intCounter, 7).Value
ListBox1.List(ListBox1.ListCount - 1, 7) = .Cells(intCounter, 8).Value
ListBox1.List(ListBox1.ListCount - 1, 8) = .Cells(intCounter, 10).Value
End If
Next intCounter
End With
'Next intSheetCounter
Next AM
End Sub

Aber ich glaube, dass das Problem doch wo anders liegt.
Ich hab da letzte Nacht noch mal drüber nachgedacht. Und zwar wird das Tabellenblatt "Wertetabelle" durch meine Combobox-Auswahl erst generiert.
Das was da dann abläuft hat folgenden Hintergrund. Ich muss Daten aus Variablen txt.-Dateien auslesen. Und je nach Auswahl des Namens aus der Combobox, soll automatisch die richtige Datei aus dem richtigen Ordner eingelesen werden und die entsprechenden Diagramme generiert werden. Natürlich auch mit dem richtigen Datum, das man per Kalendar-Element auswählen muss, wodurch in A1 das gewählte Datum eingetragen wird und dieses dann für den Namen der zu importierenden Txt-Datei genommen wird.
Die Wertetabelle lass ich dann in der Listbox der Userform anzeigen und die Diagramme als temporäre GIFs in einem Bildelelement der selben Userform
Hier der Code (nur für eine Messstelle, da kommen noch 37 andere, also 37x der ähnliche Code zusätzlich)

Private Sub ComboBox2_Change()
'Dropdown für Straße
'On Error Resume Next
Select Case ComboBox2.Value
Case "VDe 11-01-A1/Joseph-Beuys-Ufer"
Dim subfolder As String
Dim Datum As String
Dim ByI As Byte
subfolder = ("040468FF6A69740E\Linie_0510\")
Datum = ActiveSheet.Range("A1").Value 'Datum = Range("a1").Value
'   Dateiname 030117_m.xls; JJJJMMTT
Application.ScreenUpdating = False 'hier ggf. abschalten
For ByI = 0 To 0
'Workbooks.Open Filename:="C:\My Autoscope\Polling Data\" & Format(subfolder) & Format(Datum) & "_" & Format(ByI) & ".txt" '& "_1.txt" & "_2.txt"
'Next ByI
Workbooks.OpenText Filename:="C:\My Autoscope\Polling Data\" & Format(subfolder) & Format(Datum) & "_" & Format(ByI) & ".txt", DataType:=xlDelimited, semicolon:=True
Next ByI
'Makro zum Einfügen neuer Diagramme nach Importieren von Dateninhalten aus den Pollingdateien
'Namenskonvention 1_1: Makro für Diagramm 1 der 1. Station, 1_2: Makro für Diagramm 2 der 1. Station, 2_1: Makro für Diagramm 1 der 2. Station u.s.w.
Dim objName1_1 As Range
Dim rngF1_1 As Range
Dim rngK1_1 As Range
Dim rngUnion1_1 As Range
'On Error GoTo Dia_mach_Error1_1
'Filtern aktivieren
Columns("D:H").Select
Selection.AutoFilter
'Filter für Spalte E einstellen
Selection.AutoFilter Field:=2 ', Criteria1:="D1*"
Application.SendKeys ("{Down}{Down}{Down}~"), True
'Filter für Spalte H einstellen
Selection.AutoFilter Field:=5, Criteria1:="100"
'Neues Tabellenblatt einfügen und Umbenennen der beiden Blätter
Sheets.Add
With Excel.Application.Worksheets(1)
.Name = "div_Diagramme"
End With
With Excel.Application.Worksheets(2)
.Name = "Wertetabelle"
End With
'Tabelle einfügen
Set objName1_1 = Sheets("Wertetabelle").Range("D10")
Set rngF1_1 = Sheets("Wertetabelle").Range("F5:F22400")
Set rngK1_1 = Sheets("Wertetabelle").Range("K5:K22400")
Set rngUnion1_1 = Application.Union(rngF1_1, rngK1_1)
With ActiveSheet.ChartObjects.Add _
(Left:=0, Width:=375, Top:=0, Height:=225)
.Chart.SetSourceData Source:=rngUnion1_1
.Chart.ChartType = xlXYScatter
End With
'Anwählen des Diagramms
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.ChartArea.Select
'Formatieren der Tabelle
With ActiveChart
.HasTitle = True
'.ChartTitle.Characters.Text = "Darstellung der Verkehrskenngrößen "
.ChartTitle.Characters.Text = "Kennlinie Qges" 'objName
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Tageszeit [h]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Qges [Kfz/h]"
End With
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = True
.HasMinorGridlines = False
.MinimumScaleIsAuto = True
.MaximumScale = 1
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
ActiveChart.HasLegend = False
'Keine Hintergrundfarbe im Diagramm:
With Excel.Application
.ActiveChart.PlotArea.Select
.Selection.Interior.ColorIndex = xlNone
End With
GoTo Ende1_1
'Dia_mach_Error1_1:
'MsgBox "Error " & Err.Number & " (" & Err.Description & ") im Makro Dia_mach in Modul1"
Ende1_1:
'hier beginnt der Code für Diagramm2
Dim objName1_2 As Range
Dim rngF1_2 As Range
Dim rngK1_2 As Range
Dim rngUnion1_2 As Range
'On Error GoTo Dia_mach_Error1_2
'Application.ScreenUpdating = False
Sheets("div_Diagramme").Activate
'Tabelle einfügen
Set objName1_2 = Sheets("Wertetabelle").Range("D10")
Set rngF1_2 = Sheets("Wertetabelle").Range("F5:F22400")
Set rngK1_2 = Sheets("Wertetabelle").Range("L5:L22400")
Set rngUnion1_2 = Application.Union(rngF1_2, rngK1_2)
With ActiveSheet.ChartObjects.Add _
(Left:=375, Width:=375, Top:=0, Height:=225)
.Chart.SetSourceData Source:=rngUnion1_2
.Chart.ChartType = xlXYScatter
End With
'Anwählen des Diagramms
ActiveSheet.ChartObjects("Diagramm 2").Activate
ActiveChart.ChartArea.Select
'Formatieren der Tabelle
With ActiveChart
.HasTitle = True
'.ChartTitle.Characters.Text = "Darstellung der Verkehrskenngrößen "
.ChartTitle.Characters.Text = "Kennlinie Vmittel" 'objName
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Tageszeit [h]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Vmittel [km/h]"
End With
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = True
.HasMinorGridlines = False
.MinimumScaleIsAuto = True
.MaximumScale = 1
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
ActiveChart.HasLegend = False
'Überschrift in 12er Fettschrift
ActiveSheet.ChartObjects("Diagramm 2").Activate
ActiveChart.ChartTitle.Select
Selection.Font.Bold = True
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
'Keine Hintergrundfarbe im Diagramm:
With Excel.Application
.ActiveChart.PlotArea.Select
.Selection.Interior.ColorIndex = xlNone
End With
GoTo Ende1_2
'Dia_mach_Error1_2:
'MsgBox "Error " & Err.Number & " (" & Err.Description & ") im Makro Dia_mach in Modul1"
Ende1_2:
Sheets("Wertetabelle").Select
Application.Wait Now + TimeValue("00:00:01")
'hier beginnt der Code für Diagramm3
Dim objName1_3 As Range
Dim rngF1_3 As Range
Dim rngK1_3 As Range
Dim rngUnion1_3 As Range
'On Error GoTo Dia_mach_Error1_3
'Application.ScreenUpdating = False
Sheets("div_Diagramme").Activate
'Tabelle einfügen
Set objName1_3 = Sheets("Wertetabelle").Range("D10")
Set rngF1_3 = Sheets("Wertetabelle").Range("F5:F22400")
Set rngK1_3 = Sheets("Wertetabelle").Range("V5:V22400")
Set rngUnion1_3 = Application.Union(rngF1_3, rngK1_3)
With ActiveSheet.ChartObjects.Add _
(Left:=0, Width:=375, Top:=230, Height:=225)
.Chart.SetSourceData Source:=rngUnion1_3
.Chart.ChartType = xlXYScatter
End With
'Anwählen des Diagramms
ActiveSheet.ChartObjects("Diagramm 3").Activate
ActiveChart.ChartArea.Select
'Formatieren der Tabelle
With ActiveChart
.HasTitle = True
'.ChartTitle.Characters.Text = "Darstellung der Verkehrskenngrößen "
.ChartTitle.Characters.Text = "Kennlinie Belegungsgrad" 'objName
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Tageszeit [h]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Belegung [-]"
End With
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = True
.HasMinorGridlines = False
.MinimumScaleIsAuto = True
.MaximumScale = 1
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
ActiveChart.HasLegend = False
'Keine Hintergrundfarbe im Diagramm:
With Excel.Application
.ActiveChart.PlotArea.Select
.Selection.Interior.ColorIndex = xlNone
End With
GoTo Ende1_3
'Dia_mach_Error1_3:
'MsgBox "Error " & Err.Number & " (" & Err.Description & ") im Makro Dia_mach in Modul1"
Ende1_3:
Sheets("Wertetabelle").Select
Application.Wait Now + TimeValue("00:00:01")
'hier beginnt der Code für Diagramm4
Dim objName1_4 As Range
Dim rngF1_4 As Range
Dim rngK1_4 As Range
Dim rngUnion1_4 As Range
'On Error GoTo Dia_mach_Error1_4
'Application.ScreenUpdating = False
Sheets("div_Diagramme").Activate
'Tabelle einfügen
Set objName1_4 = Sheets("Wertetabelle").Range("D10")
Set rngF1_4 = Sheets("Wertetabelle").Range("F5:F22400")
Set rngK1_4 = Sheets("Wertetabelle").Range("M5:M22400")
Set rngUnion1_4 = Application.Union(rngF1_4, rngK1_4)
With ActiveSheet.ChartObjects.Add _
(Left:=0, Width:=375, Top:=460, Height:=225)
.Chart.SetSourceData Source:=rngUnion1_4
.Chart.ChartType = xlXYScatter
End With
'Anwählen des Diagramms
ActiveSheet.ChartObjects("Diagramm 4").Activate
ActiveChart.ChartArea.Select
'Formatieren der Tabelle
With ActiveChart
.HasTitle = True
'.ChartTitle.Characters.Text = "Darstellung der Verkehrskenngrößen "
.ChartTitle.Characters.Text = "Kennlinie Verkehrsstärke Pkw" 'objName
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Tageszeit [h]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Qpkw [Kfz/min]"
End With
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = True
.HasMinorGridlines = False
.MinimumScaleIsAuto = True
.MaximumScale = 1
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
ActiveChart.HasLegend = False
'Keine Hintergrundfarbe im Diagramm:
With Excel.Application
.ActiveChart.PlotArea.Select
.Selection.Interior.ColorIndex = xlNone
End With
GoTo Ende1_4
'Dia_mach_Error1_4:
'MsgBox "Error " & Err.Number & " (" & Err.Description & ") im Makro Dia_mach in Modul1"
Ende1_4:
Sheets("Wertetabelle").Select
'hier beginnt der Code für Diagramm5
Dim objName1_5 As Range
Dim rngF1_5 As Range
Dim rngK1_5 As Range
Dim rngUnion1_5 As Range
'On Error GoTo Dia_mach_Error1_5
'Application.ScreenUpdating = False
' Lkw-Verkehrsstärke berechnen lassen
Sheets("Wertetabelle").Select
'fügt Straßennamen in F1 ein
Range("F1").Select
ActiveCell.FormulaR1C1 = "=LEFT(R[4]C[-2],12)"
Range("A1").Select
'weiter mit Verkehrsstärke Lkw
Range("X5").Select
ActiveCell.FormulaR1C1 = "=RC[-13]-RC[-11]"
Range("X5").Select
Selection.AutoFill Destination:=Range("X5:X22400"), Type:=xlFillDefault
Range("X5:X22400").Select
Sheets("div_Diagramme").Activate
'Tabelle einfügen
Set objName1_5 = Sheets("Wertetabelle").Range("D10")
Set rngF1_5 = Sheets("Wertetabelle").Range("F5:F22400")
Set rngK1_5 = Sheets("Wertetabelle").Range("X5:X22400")
Set rngUnion1_5 = Application.Union(rngF1_5, rngK1_5)
With ActiveSheet.ChartObjects.Add _
(Left:=375, Width:=375, Top:=460, Height:=225)
.Chart.SetSourceData Source:=rngUnion1_5
.Chart.ChartType = xlXYScatter
End With
'Anwählen des Diagramms
ActiveSheet.ChartObjects("Diagramm 5").Activate
ActiveChart.ChartArea.Select
'Formatieren der Tabelle
With ActiveChart
.HasTitle = True
'.ChartTitle.Characters.Text = "Darstellung der Verkehrskenngrößen "
.ChartTitle.Characters.Text = "Kennlinie Verkehrsstärke Lkw" 'objName
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Tageszeit [h]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Qlkw [Kfz/min]"
End With
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = True
.HasMinorGridlines = False
.MinimumScaleIsAuto = True
.MaximumScale = 1
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
ActiveChart.HasLegend = False
'Keine Hintergrundfarbe im Diagramm:
With Excel.Application
.ActiveChart.PlotArea.Select
.Selection.Interior.ColorIndex = xlNone
End With
'Abspann
Sheets("div_Diagramme").Select
Range("A1").Select
' letzte Aktualisierung Seiteneinrichtung
ActiveSheet.PageSetup.PrintArea = "$A$1:$S$36"
With ActiveSheet.PageSetup
.RightHeader = "Datum: &D" & Chr(10) & "Verkehrsdatenvisualisierung:" & " " & _
Format(Worksheets("Wertetabelle").Range("F1").Value)
.CenterFooter = "Seite: &P"
.CenterHorizontally = True
.CenterVertically = True
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
ActiveWindow.View = xlNormalView
'Lineup der Charts
Dim MyWidth As Single, MyHeight As Single
Dim NumWide As Long
Dim iChtIx As Long, iChtCt As Long
MyWidth = 375 '200
MyHeight = 225 '150
NumWide = 3
iChtCt = ActiveSheet.ChartObjects.Count
For iChtIx = 1 To iChtCt
With ActiveSheet.ChartObjects(iChtIx)
.Width = MyWidth
.Height = MyHeight
.Left = ((iChtIx - 1) Mod NumWide) * MyWidth
.Top = Int((iChtIx - 1) / NumWide) * MyHeight
End With
Next
Application.ScreenUpdating = True
'Code für nächste Messstelle....nach Auswahl in Combobox
Case "VDe 16-01-C1-MD/Rheinufertunnel Einf."
'u.s. w. (analog zu oben)
Hoffe das ganze macht alles ein wenig deutlicher! Ich weiß, dass man den Code irgendwie schlanker gestalten könnte, leider fehlt mir die Zeit...
Vielleicht kommt dadurch der Fehler zustande?
Hoffe, Ihr könnt mir helfen?
Danke!
Gruß Till

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige