Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
888to892
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
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro zur Erstellung dynamischer Datenreihen HILFE

Makro zur Erstellung dynamischer Datenreihen HILFE
17.07.2007 19:22:19
Sebastian
Hallo zusammen,
ich brauche dringend Hilfe...
Ich habe ein Makro geschreiben zur Auswertung von Daten, die in einem Diagramm dargestellt werden sollen.
Die Anzahl der Daten der einzelnen Kennlinien ist allerdings dynamisch, nach jeder Messung habe ich unterschiedlich viele Daten.
Insgesamt sind es 6 Datenreihen die ich richtig ornen uss und dann in Tabelle übertragen.
Dazu habe ich folgendes Makro zusammen geschustert, allerdings läuft es mehr schlecht als Recht.
Hat nicht noch jemand Tips?
Vielleicht kommt ja auch wer aus Braunschweig und Umgebung, der mir hier weiterhelfen könnte!
Es ist wirklich dringend!
Vielen Dank.
Sub Tabelle_einzeln()
Dim Bezeichnung1 As Variant
Dim Anfang1 As Variant
Dim AnfangWiderstand As Variant
Dim Zahlenanfang As Variant
Dim Zahlenanfang1 As Variant
Dim Temperatur As Object
Dim Widerstandswerte As Variant
Dim Widerstandswerte1 As Variant
Dim Bezeichnung_Kennlinie As Variant
Dim Zahlenreihe1x As String
Dim Zahlenreihe1y As String
Dim Zahlenreihe2x As String
Dim Zahlenreihe2y As String
Dim Zahlenreihe3x As String
Dim Zahlenreihe3y As String
Dim Zahlenreihe4x As String
Dim Zahlenreihe4y As String
Dim Zahlenreihe5x As String
Dim Zahlenreihe5y As String
Dim Zahlenreihe6x As String
Dim Zahlenreihe6y As String
ChDir "\Dokumente und Einstellungen\Privat.COMPUTERNAME\Desktop\MEF"
ChDrive "c:\"
'Das Dialogfenster
Bezeichnung1 = Application.GetOpenFilename("Alle Dateien (*.*), *.*")
If Bezeichnung1 = False Then Exit Sub
Sheets("Tabelle1").Select
Workbooks.OpenText Filename:=Bezeichnung1 _
, Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=False
Bezeichnung_Kennlinie = ActiveCell.Worksheet.Name
Set Fundstelle = Range("A4:A25").Find("Kraft[N]")
If Not Fundstelle Is Nothing Then
Fundstelle.Activate
Anfang1 = Fundstelle.Address 'Zelle für Kraft[N]
Else
MsgBox "Der Anfangswert konnte nicht ermittelt werden. Makro wird geschlossen!", vbCritical
Exit Sub
End If
Set Zahlenanfang = ActiveSheet.Range(Anfang1).Rows(2) 'erster Wert ausgewählt
Zahlenanfang.Activate
Zahlenanfang1 = Zahlenanfang.Address 'Messwertreihen ordnen
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe1x = Selection.Address
Set Widerstandswerte = ActiveSheet.Range(Zahlenanfang1).Columns(2) 'Widerstandswerte normalisieren
Widerstandswerte.Select
Range(Widerstandswerte, [B2000]).Select
Selection.NumberFormat = "General"
Widerstandswerte.Activate
Widerstandswerte1 = Widerstandswerte.Address
Widerstandswerte.Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe1y = Selection.Address
Zahlenanfang.Activate 'Rahmen setzen
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
ActiveSheet.Range(Anfang1).Columns(4).Select
Zahlenanfang.Activate 'Messwertreihen ordnen
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Cut
Zahlenanfang.Select
ActiveSheet.Range(Zahlenanfang1).Columns(4).Select
ActiveSheet.Paste
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Zahlenanfang.Activate
ActiveSheet.Range(Zahlenanfang1).Columns(4).Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe2x = Selection.Address
Zahlenanfang.Activate
ActiveSheet.Range(Zahlenanfang1).Columns(5).Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe2y = Selection.Address
Zahlenanfang.Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Cut
ActiveSheet.Range(Zahlenanfang1).Columns(7).Select
ActiveSheet.Paste
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Zahlenanfang.Activate
ActiveSheet.Range(Zahlenanfang1).Columns(7).Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe3x = Selection.Address
Zahlenanfang.Activate
ActiveSheet.Range(Zahlenanfang1).Columns(8).Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe3y = Selection.Address
Zahlenanfang.Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Cut
ActiveSheet.Range(Zahlenanfang1).Columns(10).Select
ActiveSheet.Paste
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Zahlenanfang.Activate
ActiveSheet.Range(Zahlenanfang1).Columns(10).Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe4x = Selection.Address
Zahlenanfang.Activate
ActiveSheet.Range(Zahlenanfang1).Columns(11).Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe4y = Selection.Address
Zahlenanfang.Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlUp)).Select
Selection.Cut
ActiveSheet.Range(Zahlenanfang1).Columns(13).Select
ActiveSheet.Paste
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Zahlenanfang.Activate
ActiveSheet.Range(Zahlenanfang1).Columns(13).Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe5x = Selection.Address
Zahlenanfang.Activate
ActiveSheet.Range(Zahlenanfang1).Columns(14).Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe5y = Selection.Address
Zahlenanfang.Select
Selection.End(xlDown).Select
Selection.End(xlDown).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Cut
ActiveSheet.Range(Zahlenanfang1).Columns(16).Select
ActiveSheet.Paste
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Zahlenanfang.Activate
ActiveSheet.Range(Zahlenanfang1).Columns(16).Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe6x = Selection.Address
Zahlenanfang.Activate
ActiveSheet.Range(Zahlenanfang1).Columns(17).Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe6y = Selection.Address
Zahlenanfang.Activate
Charts.Add
ActiveChart.ChartType = xlXYScatterLinesNoMarkers
ActiveChart.SetSourceData Source:=Worksheets(Bezeichnung_Kennlinie).Range("A10:M202"), _
PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Delete 'vorhandene Kennlinie löschen
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection.NewSeries 'neue Kennlinie einfügen
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
'Werte in Diagramm einfügen
ActiveChart.SeriesCollection(1).XValues = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe1x)
ActiveChart.SeriesCollection(1).Values = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe1y)
ActiveChart.SeriesCollection(1).Name = "=""1. Kraft steigend"""
ActiveChart.SeriesCollection(2).XValues = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe2x)
ActiveChart.SeriesCollection(2).Values = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe2y)
ActiveChart.SeriesCollection(2).Name = "=""1. Kraft fallend"""
ActiveChart.SeriesCollection(3).XValues = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe3x)
ActiveChart.SeriesCollection(3).Values = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe3y)
ActiveChart.SeriesCollection(3).Name = "=""2. Kraft steigend"""
ActiveChart.SeriesCollection(4).XValues = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe4x)
ActiveChart.SeriesCollection(4).Values = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe4y)
ActiveChart.SeriesCollection(4).Name = "=""2. Kraft fallend"""
ActiveChart.SeriesCollection(5).XValues = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe5x)
ActiveChart.SeriesCollection(5).Values = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe5y)
ActiveChart.SeriesCollection(5).Name = "=""3. Kraft steigend"""
ActiveChart.SeriesCollection(6).XValues = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe6x)
ActiveChart.SeriesCollection(6).Values = Worksheets(Bezeichnung_Kennlinie).Range(Zahlenreihe6y)
ActiveChart.SeriesCollection(6).Name = "=""3. Kraft fallend"""
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Kennlinie"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Widerstand-Kraft-Kennlinie " & Bezeichnung_Kennlinie
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Kraft [N]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Widerstand [MOhm]"
End With

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zur Erstellung dynamischer Datenreihen HILFE
18.07.2007 09:21:31
Wolli
Hallo Sebastian, das sieht doch recht brav aus, wenn auch vielleicht etwas umständlich. Teile doch bitte mit, welche Teile des Makros hakelig sind und unter welchen Umständen, dann macht es erheblich mehr Spaß, sich das anzuschauen. Füge den Code mit der "Zitat"-Funktion ein, dann sieht man auch die Einrückungen. Teste Deinen Code mit dem Einzelschrittverfahren (Makro im VBA-Editor mit F8 durchlaufen), dann fällt die Fehlersuche leichter.
Und bevor Du ganz in Verzweiflung versinkst, überlege, ob Du die Datenreihen nicht vielleicht lieber von Hand anpasst, anstatt viele Stunden in die Programmierung zu stecken.
Kopf hoch, Gruß, Wolli :-)

Anzeige
AW: Makro zur Erstellung dynamischer Datenreihen H
18.07.2007 10:18:13
Sebastian
Hallo Wolli,
Also mir geht es vorrangig darum die aufsteigenden und absteigenden Werte in einer Schleife zu finden und diese dann in einer Variablen zu hinterlegen...
Jetzt sieht das so aus:
Bsp.:
5
8
12
33
LEERZEILE
32
26
18
11
5
LEERZEILE
usw.
ich suche dabei nach den Leerzeilen mit STRG+SHIFT+UP
da ich mich nicht auf feste Zellbereich festlegen kann.
Wie kann man das in einer Schleife hinterlegen? Minimalen Wert suchen und den dazugehörigen maximalen WERT und dazwischen makieren?
Jetzt sieht der Part ja noch so aus:

Zahlenanfang.Activate
Zahlenanfang1 = Zahlenanfang.Address 'Messwertreihen ordnen
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe1x = Selection.Address
Set Widerstandswerte = ActiveSheet.Range(Zahlenanfang1).Columns(2) 'Widerstandswerte  _
normalisieren
Widerstandswerte.Select
Range(Widerstandswerte, [B2000]).Select
Selection.NumberFormat = "General"
Widerstandswerte.Activate
Widerstandswerte1 = Widerstandswerte.Address
Widerstandswerte.Select
Range(Selection, Selection.End(xlDown)).Select
Zahlenreihe1y = Selection.Address


weißt du wie ich das meine?
kann dir auch gern das Makro und eine Datei dazu schicken, arbeiten tut es ja aber kleine Hakler sind halt drin...
Vielen Dank schonmal für deine Hilfe!

Anzeige
AW: Makro zur Erstellung dynamischer Datenreihen H
18.07.2007 11:32:00
Wolli
Hallo Sebastian, schick doch mal eine Datei + Quelldaten (kannst hier glaube ich ein ZIP hochladen), wenn die Daten nicht geheim sind. Ich denke, aus der Struktur kann ich eher schlau werden. Gruß, Wolli

AW: Makro zur Erstellung dynamischer Datenreihen H
18.07.2007 14:11:00
Wolli
So mein Lieber, ich habe Dir nur die xls-Datei zurückgeladen:
https://www.herber.de/bbs/user/44207.xls
- Nur das Makro in Modul 1 angeschaut
- Variablendeklaration geradegezogen (Option explicit!)
- Blöcke finden über for..next geschleift
- Formatierung gekürzt
- Diagramm-Quellbereiche in Feldvariable gepackt
- Diagrammerstellung gerafft
- Diagrammformatierung nicht verändert
Bitte Rückmeldung! Gruß, Wolli

Anzeige
PS
18.07.2007 14:26:00
Wolli
PS: Die Zeile

Cells(Laufzeile, 1).Select


habe ich nur eingefügt, damit man das Geschehen auf dem Schirm verfolgen kann. Sie kann auch rausgeschmissen werden! Gruß, Wolli

AW: PS
18.07.2007 15:02:52
Sebastian
Hey vielen Dank, das ist ja der Hammer!
Ich habe auch paralell daran gesessen, aber darauf wäre ich nie gekommen!!!
Gibt es auch etwas wo man minimas und maximas mit ermitteln kann?
Oder auch in Spalten Werte die beispielsweise kleiner als 20 sind löschen kann?
Also das Makro funktioniert echt super! Vielen Dank nochmal!!!!

Anzeige
AW: PS
18.07.2007 15:39:00
Wolli
Hi Sebastian, hier nochmal die do..loop-Schleife aufgebohrt, musst Du für Dich anpassen. Du kannst also während des Durchlaufens Werte nachschauen und ggf. die betroffene Zeile ganz löschen oder den Wert in einer Var. speichern und später verwenden. Gruß, Wolli
PS: Nicht vergessen, die Var. zu deklarieren - wegen Option Explicit ist das jetzt unumgänglich :-)

Do
Laufzeile = Laufzeile + 1
If Cells(Laufzeile, 3)  maximalwert Then
maximalwert = Cells(Laufzeile, 3)
End If
Cells(Laufzeile, 1).Select
Loop Until Cells(Laufzeile, 1) = ""


Anzeige
AW: PS
18.07.2007 16:03:27
Sebastian
Hey vielen Dank Wolli!
Werde ich gleich mal ausprobieren!
Bin echt begeister hier!
Option Explicit habe ich jetzt auch mitbekommen und was dazu gelernt!
Also vielen Dank nochmal!!!
Falls sich noch Abgründe bei mir auftun sollten kann ich dich da irgendwie nochmal kontaktieren?

AW: PS
18.07.2007 16:06:00
Wolli
Na klar, schreib hier rein, bis Freitag schaue ich täglich vorbei. Ab Samstag Uuuuuuuuuurlaub! - Wolli

AW: PS
18.07.2007 16:39:00
Sebastian
Alles klar und vielen Dank nochmal!!!!

AW: PS
19.07.2007 15:18:00
Sebastian
Hallo Wolli,
also ich habe viel Zeit mit dem Makro jetzt verbracht und hoffe es noch ein wenig verbessert zu haben :-))
Was mir allerdings noch nicht ganz gefällt, ist die Formatierung der Kennlinien, kann man das auch in eine Schleife einbinden?
Und wie formatiert man die Überschrift, zwecks Schriftart, Schriftgröße und Schriftstil?
Hier meine Arbeit der letzten 24 h, vielleicht könntest du dir das nochmal anschauen?
https://www.herber.de/bbs/user/44248.zip

Anzeige
AW: PS
19.07.2007 16:26:00
Wolli
Hallo Sebastian, ich versuche, morgen früh Zeit zu finden. Grundsätzlich kannst Du alle Formatierungen auch per Schleife auf alle anwenden. Ich habe neulich mal ein Makro zur Diagrammformatierung geschrieben, das kannst Du Dir schonmal anschauen.
Gruß, Wolli

Option Explicit
Sub Diagramm_formatieren()
Dim s As Series, _
c As Chart, _
test As String
'Ggf. Diagramm aktivieren
test = ActiveSheet.Name
For Each c In ActiveWorkbook.Charts
If c.Name = test Then
test = "##Diagramm##"
Exit For
End If
Next c
If test  "##Diagramm##" Then
ActiveSheet.ChartObjects(1).Activate
End If
'Diagramm als eigenes Blatt, benutzerdef. Größe
ActiveChart.Location Where:=xlLocationAsNewSheet
With ActiveChart.PageSetup
.Orientation = xlLandscape
.Zoom = 100
.ChartSize = xlScreenSize
End With
'Größe und Position festlegen
With ActiveChart.ChartArea
.Height = 199 '7 cm x 28,41
.Width = 426 '15 cm x 28,41
.Left = 100
.Top = 100
End With
'Y-Achse formatieren
With ActiveChart.Axes(xlValue)
.TickLabels.AutoScaleFont = False
.TickLabels.Font.Name = "Verdana"
.TickLabels.Font.FontStyle = "Fett"
.TickLabels.Font.Size = 8
End With
'X-Achse formatieren
With ActiveChart.Axes(xlCategory)
.TickLabels.AutoScaleFont = False
.TickLabels.Font.Name = "Verdana"
.TickLabels.Font.FontStyle = "Fett"
.TickLabels.Font.Size = 8
End With
'Titel formatieren
With ActiveChart.ChartTitle
.Font.Name = "Verdana"
.Font.FontStyle = "Fett"
.Font.Size = 10.5
End With
'Legende formatieren
With ActiveChart.Legend
.AutoScaleFont = False
.Font.Name = "Verdana"
.Font.FontStyle = "Fett"
.Font.Size = 8
End With
'Zeichnungsbereich formatieren
With ActiveChart.PlotArea
.Interior.ColorIndex = xlNone
End With
'Datenbeschriftungen einschalten
ActiveChart.ApplyDataLabels AutoText:=True, LegendKey:=False, _
HasLeaderLines:=False, ShowSeriesName:=False, ShowCategoryName:=False, _
ShowValue:=True, ShowPercentage:=False, ShowBubbleSize:=False
'Datenbeschriftungen formatieren
For Each s In ActiveChart.SeriesCollection
With s.DataLabels
.AutoScaleFont = False
.Font.Name = "Verdana"
.Font.FontStyle = "Fett"
.Font.Size = 7
End With
Next s
End Sub


Anzeige
AW: PS
19.07.2007 16:43:22
Sebastian
jep ich gleiche das mal mit meinem ab :-)
Ich glaube so ähnlich habe ich das schon, nur die Kennlinien formatiere ich ja auch noch...
Wenn ich Trendlinien einfügen will und die Formel anzeigen lasse
bspw. 10.369,59e-0,0123 würde ich gern den ersten Wert ohen Kommastellen anzeigen lassen und den Hochwert mit 4 Kommastellen. Kann das Excel VBA?
Vielen Dank erstmal !

AW: PS
20.07.2007 09:25:59
Sebastian
Hallo Wolli, ich habe nochmal nen bißchen getüfftelt und letztendlich das hier zu stande bekommen :-)
Leider konnte ich die Schleife zur Abfrage der Werte unter 20 und max-Werte nicht einbauen, er lläuft bei mir immer bis ins unendliche :-(
Und die Überschrift bekomme ich nicht recht formatiert.
Aber der Rest müsste ganz gut gelöst sein oder?
https://www.herber.de/bbs/user/44269.zip

Anzeige
AW: PS
20.07.2007 09:50:00
Wolli
Moin Sebastian, jetzt haben wir uns natürlich überschnitten. Ich schaue mir Deine Version jetzt nicht an, sondern lade Dir die von mir aktualisierte Version hoch:
https://www.herber.de/bbs/user/44270.xls
Beachte:
- Ich habe ein (erstmal auskommentiertes) Auto-Start-Makro in den Code von "Diese Arbeitsmappe" getan.
- Ich verstecke nach dem Klick das Userform (nicht unload, so dass alle Felder weiterhin verfügbar sind).
- Ich habe diverse "Select"s rausgenommen - die braucht kein Mensch und es verrät, wie viel Du mit dem Makrorekorder gearbeitet hast :-)
- Beachte auch die Umstellungen / Änderungen der With..End With-Konstrukte, jetzt ist es stringenter.
- Die Formatierung der Datenreihen ist jetzt geschleift
- Den Fehlerabfang für das Dateiöffnen muss man dann auch wieder abstellen - gemacht.
Trendlinien-Formel: Direkt formatieren geht wohl nicht. Du könntest die Formel als String abgreifen:

ActiveChart.SeriesCollection(5).Trendlines(1).DataLabel.caption
oder
ActiveChart.SeriesCollection(5).Trendlines(1).DataLabel.text


dann umformen und formatieren und auf dem gleichen Wege wieder zurückschreiben. Aber das wäre eine Wissenschaft für sich. Bei normalen Datenpunkt-Beschriftungen kann man ein Zahlenformat (NumberFormat) vorgeben, aber anscheinend nicht für den Trendlinientext.
Wenn ich Dir nochmal für diese "Werte unter 20 und max-Werte" unter die Arme greifen soll, beschreibe bitte das Problem konkret: Welche Spalte, welche Werte, was soll passieren.
Bis später. Meine Deadline für die nächsten 3 Wochen: heute 15 Uhr!! Gruß, Wolli

Anzeige
AW: PS
20.07.2007 13:34:37
Sebastian
Hallo Wolli,
die Schleife ist echt genial und einfach (wenn man weiß wie) :-) und das Ausblenden der UserForm ist auch sehr hilfreich!
Bei dem Rest bin ich noch am anschauen und überlegen ;-) auf jeden Fall habe ich die letzten Tage viel dazu gelernt!!!
Die Trendlinien nehme ich mir am Schluss vor…
Nun noch mal zu den „Werten unter 20 und max Werten“
Ich versuche es mal zu erklären…
Ich habe in der Kraft-Spalte ja die auf- und absteigenden Werte stehen. Getrennt werden diese durch eine Leerzeile, die allerdings manuell eingefügt werden muss.
Wenn ich nun die drei Zyklen durchlaufen lasse und eine Leerzeile vergesse, erkennt das Makro nicht mehr die Abhängigkeit von Belastung und Entlastung, die ja durch die Leerzeilen gegeben ist…
Daher wäre es hilfreich, wenn man sagt:
- kontolliere Kraftwerte[Spalte A] und Widerstandswerte[Spalte B] und entferne negative und Werte unter 20 als ganze Zeile
- Dann nimm den ersten Kraftwert und suche in der Spalte das Maximum
- Zwischen ersten Kraftwert, der dann ja größer 20 sein muss, und gefundenen Maximum ist der Berich der ersten Kraftbelastung
- Dann nimm das Maximum und suche das Minimum, was größer als 20 sein muss und dies ist dann der Bereich der ersten Kraftentlastung
- Und dies entweder drei mal (für die drei Zyklen) oder halt bis keine Werte mehr kommen, also eine oder zwei Leerzeilen
- Das ergibt dann die Kennlinien für die Darstellung im Diagramm wie jetzt auch
Ich hoffe ich konnte das einigermaßen gut beschreiben und damit wäre mir richtig geholfen :-))
Ich hänge auch noch eine Beispieldatei mit vergessenen Leerzeilen und negativen Werten an…
Danke schon mal, wie gesagt, ich habe echt viel gelernt und auch schon mehrere Bücher besorgt und langsam Spaß daran gefunden :-)
https://www.herber.de/bbs/user/44292.zip

AW: Makro zur Erstellung dynamischer Datenreihen H
18.07.2007 15:06:00
Sebastian
Und was ist dieses option explicit?
Wofür verwendet man das?

AW: Makro zur Erstellung dynamischer Datenreihen H
18.07.2007 15:10:10
Renee
Hi Sebastian,
Wenn man im VB-Editor den Cursor auf einen Ausdruck setzt und F1 drückt, gibt es eine wunderbare Hilfe.
Option Explicit verhindert die implizite Deklaration von Variablen(typen).
Greetz Renee

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige