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

StartRow

StartRow
07.07.2005 15:35:53
Richard
Hallo,
vielleicht könnt ihr mir helfen, ich komme nicht weiter, und zwar ich erstelle per vba Diagramme, es sind Daten mit unterschiedlich vielen Zeilen, deswegen habe ich eine Inputbox eingebaut, in der ich eingeben kann ab welcher Zeile ich die Auswertung haben möchte, mein Problem ist jetzt, das in der zweiten Zeile die Überschriften für die Daten stehen, wenn ich jetzt bei StartRow 50 eingebe dann kriege ich ein Diagramm in der Legende aber sind die Daten als Reihen beschriftet, wie könnte ich das ändern?
wäre sehr dankbar für jede Antwort
gruß
richard
hier ein Auschnitt:
Option Explicit
Dim mysheet As Worksheet

Private Sub Diagramm()
Dim i As Integer
Dim anzZeilen As Long
Dim StartRow As Long
Dim First As Boolean
Dim src As Range
Dim xColumn As Integer
Dim ch As Chart
Dim s As String
Dim user
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
On Error GoTo err_CreateChart
user = Environ("Username")
On Error GoTo fehler
First = True 'Boolean
With mysheet
anzZeilen = .Cells(.Rows.Count, 12).End(xlUp).Row
StartRow = Application.InputBox("Geben Sie die Zeile mit der Sie die Auswertung beginnen möchten!")
End With
For i = 0 To ListBox1.ListCount - 1
With mysheet
xColumn = ListBox1.List(i, 1)
Set src = Range(.Cells(StartRow, xColumn), .Cells(anzZeilen, xColumn))
'hier müsste ich irgendwie noch die 2 Zeile angeben zu StartRow aber wie?
End With
If ListBox1.Selected(i) Then
If First Then
First = False
s = mysheet.Name
Set ch = Charts.Add
'++++++++++++++++++++++++++++++++Diagrammformatierung+++++++++++++++++++++++++++++++++++++++++++
With ch
.ChartType = xlXYScatter
.SetSourceData Source:=src, PlotBy:=xlColumns
.Location xlLocationAsNewSheet, Name:=ListBox1.List(i)
.HasTitle = True
.ChartTitle.Text = s
.HasLegend = True
.Legend.Border.LineStyle = xlNone
.Legend.Font.Size = 8
.Legend.Position = xlLegendPositionBottom
.PlotArea.Border.LineStyle = xlNone
.Axes(xlValue).MajorGridlines.Border.LineStyle = xlDot
.Axes(xlValue).TickLabels.Font.Size = 8
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "µm"
.Axes(xlCategory).TickLabels.Font.Size = 8
.Axes(xlCategory).TickLabelPosition = xlLow
xColumn = IIf(ComboBox1.ListIndex = 0, 14, 15)
.seriescollection(1).XValues = "='" & mysheet.Name & "'!R" & StartRow & "C" & xColumn & ":R" & anzZeilen & "C" & xColumn
End With
If Me.CheckBox1 = True Then
ch.PlotArea.Fill.TwoColorGradient Style:=msoGradientHorizontal, Variant:=1
ch.PlotArea.Fill.ForeColor.SchemeColor = 15
ch.PlotArea.Fill.BackColor.SchemeColor = 2
ch.PlotArea.Fill.Visible = True
Else
ch.PlotArea.Interior.ColorIndex = xlNone
End If
Else
ch.seriescollection.Add src
End If
ch.PageSetup.RightFooter = "&8erstellt von " & user
ch.PageSetup.LeftHeader = "&8Stand: " & Format(Date, "dd.mmmm yyyy")
End If
Next
Exit Sub
Set ch = Nothing
err_CreateChart:
MsgBox "Fehler " & Err.Number & vbCrLf & Err.Description, _
vbOKOnly + vbCritical
fehler:
MsgBox "Der Vorgang wurde abgebrochen!"
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: StartRow
08.07.2005 12:44:44
Ralf
Hi Richard,
ich hab es zwar nicht ausprobiert, aber schaden kann es nicht mal folgendes zu probieren:
Set src = Range(.cells(2,1), .cells(2,xColumn) & _
Range(.Cells(StartRow, xColumn), .Cells(anzZeilen, xColumn))
Evtl. noch die Anfangsspalte variabel gestalten.
Wäre schön zu wissen ob es so geht.
Ciao, Ralf
AW: StartRow
08.07.2005 17:06:56
Richard
Hallo Ralf,
ich dank dir zunächst für die Antwort, dachte nicht mehr, dass noch jemand antwortet.
Bin bei Vba noch nicht so lange dabei, aber ist das wirklich so kompliziert die zweite Zeile noch einzufügen?
Bei deinem Beispiel bekomme ich eine Fehlermeldung "Typen unverträglich Fehler 13" und es wird dieser Range markiert, ist das wegen der Cells(2, 1)?
wär super, wenn du antworten würdest, ich stehe nämlich immer noch im Nebel
gruß
richard
Anzeige
AW: StartRow
08.07.2005 18:57:18
Ralf
Hi Richard,
ich kann es immer noch nicht garantieren, habe aber mal ein wenig herumexperiementiert und bin dabei zu folgendem Ergebnis gekommen. (Hier werden 3 Bereiche (in einem Blasendiagramm) gesetzt)
Set scr = Range("A2:A127,AA2:AA127,AE2:AE127")
Ich hoffe, das hilft Dir weiter!
Ciao, Ralf
PS: Falls alle Stricke reissen, kannst Du mal die komplette Datei hochladen? Da läßt sich vieles leichter ableiten.
AW: StartRow
08.07.2005 21:59:30
Richard
Hallo Ralf,
dank dir für die Antwort.
DAs hilft mir glaube ich auch nicht weiter, bin die ganze Zeit am testen, komme der Sache schon näher, bin aber immer noch nicht am Ziel, ich lade mal die DAtei hier ins Forum, dann kannst du dir besser ein Bild machen von dem was ich machen will, du klickst einfach auf ein button (z.B.fHb L) dann auf Diagramm, jetzt kommt die Abfrage, bei welcher Zeile wollen Sie beginnen, die Werte die ausgewertet werden sollen siehst du in der Listbox mit einem Häckchen, nu kommt das Diagramm aber die Überschriften sind hier doppelt und dreifach, das ist nicht gut, vielleicht findest du ne Idee wie ich das in Griff bekomme.
wünsch noch einen schönen Abend
gruß
richard
https://www.herber.de/bbs/user/24587.xls
Anzeige
AW: StartRow
10.07.2005 16:54:00
Ralf
Hi Richard,
ich kann Dir jetzt nicht mit 100%iger Sicherheit versprechen, daß meine Lösung Deinen Vorstellungen entspricht, aber sie funktioniert. Deine wesentlichen Fehler waren, daß Du die Bereiche nicht korrekt angegeben hattest und versucht hast für jede Datenreihe ein neues Diagramm zu erstellen. Ich hab nur die Prozedur Diagramm_Einzelwerte geändert. Meine Empfehlung wäre, den Diagrammcode in eine separate Prozedur auszulagern.
Langer Rede kurzer Sinn, meinen Lösungsvorschlag findest Du unter:
https://www.herber.de/bbs/user/24611.xls
Ich hoffe, das hilft Dir weiter!
Ciao, Ralf
Anzeige
AW: StartRow
11.07.2005 13:49:38
Richard
HAllo Ralf,
ich dank dir für deine Mühe und Antwort.
Es ist das was ich mir vorgestellt hatte, nur ich blick da nicht mehr so ganz durch;-)
Vielleicht kannst du mir noch drei Fragen beantworten, und zwar, ist es jetzt so, dass die Diagrammblätter nicht mehr nach dem Merkmal benannt werden,sondern Diagramm1,Diagramm2 usw. ich habs mit Name=Listbox1.List(i) versucht aber es klappt nicht, des weiteren habe ich versucht den Code an Mittelwerte anzupassen, es funktioniert, nur bei der Auswahl nach Anzahl werden die Werte trotzden nach DatumZeit erstellt und mein letztes Problem ist die KomplettAuswertung, hier solle alle Diagramme auf einmal kommen, das Problem ist hier, dass die Abfrage (StartRow=Application.Inputbox....)bei jedem Diagramm kommt, ist es möglich dies zu unterbinden, so dass wenn ich die Strtzeile einmal angegeben hab, dies dann für alle Diagramme übernommen wird?
grüße
richard
Anzeige
AW: StartRow
11.07.2005 14:46:43
ralf
Hi Richard,
wenn Du mir etwas Zeit gibst schaue ich gern noch einmal nach. Allerdings komme ich heute und morgen auf gar keinen Fall mehr dazu. Vorab erst einmal folgende Fragen/Überlegungen/Vorschläge:
Zur Änderung des Blattnamens könntest Du beispielsweise so vorgehen:
***************************************************************
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=Listbox1.List(1)
***************************************************************
Listbox.List(i) kann momentan nicht funktionieren, weil außerhalb der Schleife...
Möglicherweise hast Du die Inputbox in eine Schleife eingebaut. Damit Du nicht bei jedem Diagramm nach der Startzeile gefragt wirst, nimm die Inputbox aus der Schleife raus.
Den Rest muß ich mir näher anschauen.
Und... Du hast hart gearbeitet! Laß Dir von Deinem Chef 'ne gute Flasche Whisky ausgeben und trink sie auf mein Wohl...:-)
Ciao, Ralf
Anzeige
AW: StartRow
11.07.2005 18:20:23
Richard
Hallo Ralf,
klar, ich bin ja schon zufrieden wenn mir jemand bei diesem Problem hilft. Das Ding war schon fertig, dann kam mein Chef und wollte unbedingt diese Funktion mit der Startzeile, da war ich nicht so unbedingt erfreut darüber aber c'est la vie.
ICh werd auf jedem Fall noch rumschrauben:-)
grüße
richard
AW: StartRow
11.07.2005 22:20:42
Ralf
Hi Richard,
hab noch mal kurz in Dein Programm reingeschaut. Das Problem, daß bei der Auswertung der Mittelwerte nicht Anzahl ausgewählt wird, liegt daran, daß Du eine Multipage hast (ein TabStrip wäre in diesem Fall besser gewesen) und Du auf Seite 2 (also Mittelwerte) nicht die Combobox1 sondern die Combobox2 ansprechen mußt. In der Prozedur Mittelwerte also die If-Anweisung
**************************************
If ComboBox1.Value = "DatumZeit" Then
sEnde2 = "N2," & "N" & StartRow & ":N" & anzZeilen & "," & Mid(sEnde2, 1, Len(sEnde2) - 1)
' ch.Axes(xlCategory).TickLabels.Orientation = 90
Else
' ch.Axes(xlCategory).TickLabels.Orientation = 0
sEnde2 = "O2," & "O" & StartRow & ":O" & anzZeilen & "," & Mid(sEnde2, 1, Len(sEnde2) - 1) 'das letzte Komma abschneiden
End If
**********************************************************
alle Combobox1 durch Combobox2 ersetzen.
Ach ja, da wir gerade dabei sind. In Mittelwerte gilt das auch für die Listbox1. (Durch 2 ersetzen)
Die Prozeduren Deiner Buttons entsprechend ergänzen. Bsp:
*************************************************************

Private Sub fHbL_Click()
GroupSelect 1
BName = "fHbL" ' diese Zeile ergänzen mit fHbR, ffbL usw...
End Sub

***************************************************************
Die Variable BName im Allgemeinen Teil deklarieren und die Zeile
****************************************************************
.Location Where:=xlLocationAsNewSheet, Name:=BName
****************************************************************
in der Diagrammprozedur verwenden.
Vielleicht schaffst Du es ja bis übermorgen allein.
Ciao, Ralf
Anzeige
AW: StartRow
12.07.2005 22:05:15
Richard
Hallo Ralf,
ich dank dir, heute bin ich gar nicht dazu gekommen, mein Werkzeug weiter zu testen, Morgen mache ich mich wieder an die Arbeit und werde dir dann berichten.
Danke nochmal und schönen Abend!
gruß
rich.
AW: StartRow
12.07.2005 22:05:26
Richard
Hallo Ralf,
ich dank dir, heute bin ich gar nicht dazu gekommen, mein Werkzeug weiter zu testen, Morgen mache ich mich wieder an die Arbeit und werde dir dann berichten.
Danke nochmal und schönen Abend!
gruß
rich.
AW: StartRow
12.07.2005 22:05:54
Richard
Hallo Ralf,
ich dank dir, heute bin ich gar nicht dazu gekommen, mein Werkzeug weiter zu testen, Morgen mache ich mich wieder an die Arbeit und werde dir dann berichten.
Danke nochmal und schönen Abend!
gruß
rich.
Anzeige
AW: StartRow
13.07.2005 14:29:54
Ralf
Hi Richard,
unter https://www.herber.de/bbs/user/24688.zip findest Du eine etwas abgewandelte Variante. Hab alle überflüssigen Buttons, List- und Comboboxen rausgeschmissen und den Code etwas optimiert. Die List- und Combobox und den Diagrammbutton findest Du jetzt auf der rechten Seite (neben der Multipage). Das sollte aber kein Problem sein.
Soweit ich das gecheckt habe, sollte alles funktionieren. Unterziehe das Programm aber vor Anwendung noch einmal einem gründlichen Test.
Ciao, Ralf
AW: StartRow
13.07.2005 22:28:45
Richard
Hallo Ralf,
zunächst einmal zu de drei Beiträgen von mir, das war aus versehen, das System war zu Lahm:-)
Jetzt, zu deiner Variante, ich weiß gar nicht, was ich sagen soll, es ist einfach genial, gigantisch, einfach super! Also du kennst dich ziemlich gut aus mit VBA, das sieht man:-)
Ich hab das erst jetzt aufgemacht, betrachte mir jetzt den Code, ist nicht einfach;-)
Ich trau mich gar nicht noch irgendwelche Fragen zu stellen, aber ich kann das glaube ich alleine nicht lösen, und zwar kann ich denn nicht diese Fortschrittsleiste implementieren? es ist für den User vielleicht anschaulicher, wenn er den Fortschritt der kompletten Auswertung sieht, und meine zweite Frage ist auch bezüglich der Komplett-Auswertung, und zwar werden hier alle Diagramme erstellt z.B. auch die Toleranz, es sind aber nur 40 Diagramme, du siehst dies anhand der Groups, (40 Groups)die Toleranz gehört in die einzelnen Diagramme, wie in der Listbox, und dann werden die Diagramme einmal nach Zeit und einmal nach Anzahl erstellt, ist es möglich die Auswertung separat zu machen, also einmal alle Diagramme nach DatumZeit und dann eine Option nach Anzahl, praktisch wie bei meiner alten Version?
Ich wäre dir sehr dankbar für eine Antwort
sommerliche Grüße
richard
PS: Vielleicht doch noch eine Frage:-)
Wenn ich fragen darf, wie lange machst du schon VBA?
Anzeige
AW: StartRow
13.07.2005 23:58:56
Ralf
Hi Richard,
erstmal danke für die Blumen!
Zu Deinen Fragen:
Natürlich kannst Du die Fortschrittsleiste implementieren, ist aber nur ein unnötiger Zeitfresser. Der Nutzer wird doch darauf hingewiesen daß es dauern kann. Aber ok, das mußt Du wissen.
Ich hatte mir die Details zur Komplettauswertung nicht näher angeschaut (das ist meiner Faulheit geschuldet), sondern bin davon ausgegangen, daß alle Spalten nach Zeit und Anzahl dargestellt werden sollen. Ist aber kein Problem das zu ändern.
Ändere die For - Schleife in Diagramm_Click so ab:
For x = 0 To ListBox1.ListCount - 1
ListBox1.Selected(x) = True

w = ComboBox1.Value
BName = ListBox1.List(x)
Bereiche_Einlesen w, x, x

Diagramm_Zeichnen BName, w
ListBox1.Selected(x) = False
Next x
Das ist jetzt nur eine vorläufige Lösung, weil Deine Gruppen dabei nicht berücksichtigt wurden (das muß ich mir erst anschauen), aber zumindest kannst Du jetzt zwischen Zeit oder Anzahl wählen.
VBA mache ich schon ein paar Jahre und lerne immer noch dazu :-)
Ciao, Ralf
Anzeige
AW: StartRow
14.07.2005 10:24:50
Richard
Hallo Ralf,
danke für die schnelle Antwort, genau so hatte ich das im Sinne.
Das einzige, was jetzt noch nicht so ganz stimmt, ist die Gruppierung, ich lade nochmal die alte Datei hoch, falls du die alte nicht mehr hast, wenn du jetzt auf Komplett gehst und dann auf Diagramme, dann werden alle Diagramme erstellt, wie die Gruppierung dann aussieht, kannst du in den einzelnen Diagrammen siehen.
sommerliche grüße
Richard
https://www.herber.de/bbs/user/24706.xls
AW: StartRow
14.07.2005 12:17:19
Ralf
Hi Richard,
unter: https://www.herber.de/bbs/user/24711.zip klappt das jetzt auch mit der Gruppierung. Die Fortschrittsleiste habe ich nicht implementiert. Sie ist für das eigentliche Problem nicht relevant und, wie bereits gesagt, meiner Meinung nach unnötig. Ich helfe gern, aber zur Programmierung für unnötige Angelegenheiten bin ich nur gegen viel Geld bereit...:-)
Was Dir noch zu tun bleibt ist selbstverständlich noch ein ausgiebiger Test und die Komplettierung der Buttonprozeduren (den Wert der Variablen BName festlegen). Ein paar Buttons sind ja schon als Beispiel enthalten. Ansonsten müßte es das im Wesentlichen gewesen sein.
Ciao, Ralf
AW: StartRow
14.07.2005 22:49:41
Richard
Abend Ralf,
funktioniert einwandfrei, den Rest mache ich dann, ich danke dir nochmal vielmals, allein hätte ich das nicht geschafft.
Die Fortschrittsleiste, da muss ich noch überlegen, hab mein Kontoauszug schon seit nem Monat nicht ausgedruckt, ich glaube ich lass es:-)
sommerliche Grüße
richard

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige