Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
920to924
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
920to924
920to924
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VB uebernimmt nicht alle Werte fuer Chart

VB uebernimmt nicht alle Werte fuer Chart
07.11.2007 07:20:00
Marcus
Hallo zusammen,
ich habe folgendes Problem.
Aus zwei generierten Tabellen (eine x- und eine y-Tabelle) soll ein einfaches Balkenchart erstellt werden. X- sowie Y-Tabelle erreichen jeweils ein Maximum von 80 Werten. Da diese beiden Tabellen nie ganz mit Werten aufgefuellt werden, werden die restlichen Positionen mit "no_value" belegt. In einem aufgezeichnetem VB-Macro soll nun dieses Chart mit allen gueltigen Werten (bis zum ersten "no_value")dargestellt werden.
Bis dahin ist es eigentlich noch recht simple. Das auftretende Problem ist nur, dass das VB-Macro nicht alle gueltigen Werte uebernehmen moechte, sondern ab dem 10ten Wert die restlichen gueltigen Werte ignoriert. Das Programm laeuft sonst einwandfrei durch...
Kann mir jemand bei diesem -eher nervenden- Problem behilflich sein, da ich dazu nichts im Forum gefunden habe?
Ich bedanke mich schon jetzt fuer eure Ratschlaege und Tips.
Marcus

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VB uebernimmt nicht alle Werte fuer Chart
07.11.2007 09:00:49
Beverly
Hi Marcus,
da niemand deinen Code - bzw. besser noch deine Arbeitsmappe - kennt, wird das wohl schwierig werden mit der Hilfe.
________________________________________

AW: VB uebernimmt nicht alle Werte fuer Chart
07.11.2007 09:13:48
Marcus
Der Code bzw. das VB-Macro ist folgender: Ich hoffe das hilft euch weiter...

Sub automatische_yAchse2()
' Macro6 Macro
' Macro recorded 6/25/2007 by Marcus
' adapts the y-axes of the cycle-times chart, using the low- and high-limit on the sheet as min- _
' and max-value of the axes
Set xlcells = objxlwks.Cells(61, 14)
high = xlcells.Value
Set xlcells = objxlwks.Cells(60, 14)
low = xlcells.Value
up = high
On Error GoTo 20
ActiveSheet.Range("A1").Select
ActiveSheet.ChartObjects("Chart 2").Activate
ActiveChart.Axes(xlValue).Select
With ActiveChart.Axes(xlValue)
.MinimumScale = 0
.MaximumScale = high
.MinorUnitIsAuto = True
.MajorUnit = 0.001389
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
ActiveSheet.Range("A1").Select
20 End Sub


____________________________________________________________________


Sub Diagramm_anpassen(station As String)
'adapts the x-axes of the cycle-time chart so that not more or less than the number of
'produced BIWs is shown there
Dim i As Integer
Dim z As Integer
objxlwkb.Sheets(station).Range("A1").Select
z = 0
For i = 53 To 132               //Tabelle faengt erst bei R53 an und geht bis R132
Set xlcells = objxlwks.Cells(i, 6)
If xlcells.Value  "no_value" Then
z = z + 1
End If
Next i
z = z + 52
objxlwkb.Sheets(station).ChartObjects("Chart 2").Activate
ActiveChart.SeriesCollection(1).Select
ActiveChart.SetSourceData Source:=Sheets(station).Range("F53:F" & z & ""), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection(1).XValues = "=" + station + "!R53C4:R132C4"
Range("A1").Select
ActiveSheet.Range("A1").Select
20 End Sub


Anzeige
AW: VB uebernimmt nicht alle Werte fuer Chart
07.11.2007 09:56:26
Beverly
Hi Marcus,
da ist es schon wirklich besser, wenn du deine Arbeitsmappe hoch lädst - wer soll das denn nachbauen. Du hast ja darin schon Zeit investiert und außerdem kann ein Nachbau nie die selben Bedingungen reproduzieren wie das Original.
Bis später,
Karin

AW: VB uebernimmt nicht alle Werte fuer Chart
07.11.2007 10:18:18
Marcus
Da ich nur win.rar und kein win.zip besitze, muessen wir das leider auf morgen verschieben. Die Installation von win.rar auf meinem Rechner ist auch nicht moeglich, da mir die noetigen Rechte fehlen :-(
Ich hoffe ihr koennt mir dennoch ab Morgen helfen. Danke!
Marcus

Anzeige
AW: VB uebernimmt nicht alle Werte fuer Chart
07.11.2007 11:10:10
Beverly
Hi Marcus,
hast du nicht die Möglichkeit, deine Arbeitsmappe ein wenig abzuspecken? Es reichen doch ein paar Spieldaten aus, die das Problem verdeutlichen.
Mein Packprogramm kann nur das ZIP-Format lesen.
Bis später,
Karin

AW: VB uebernimmt nicht alle Werte fuer Chart
07.11.2007 11:23:00
ingUR
Hallo, @Markus,
das kann nicht so laufen, wie Du es dir wünschst, wenn ich Deinen Plan richtig verstanden habe, denn in Deiner ersten FOR-Schleiche ermittelst Du mit z lediglich die Anzahl der gültigen Werte (=Zelleninhalte, die nicht "no value" enthalten) im Bereich F53:F132. Sind fieses z.B. zehn Stück, dann benennest Du fest den Bereich von F53: F62 (=52+10) als Quelle fü die Daten, obwohl die die Zeilen der Zellen, in dennen Werte sich befinden zusammenstellen wolltest.
Komme jetzt nicht dazu, diesen Gedanken in Programmcode umzusetzen, doch eine einfache Möglichkeit wäre die, dass Du einen freien Bereich auf einer Tabelle dazu benutzt (unten habe ich stellvertretend die Spalten AA:BB dafür angenommen), um eine Abbildung der Spalten ohne "no value"-Einträge zu erstellen und dies dann als Datenquelle sowohl für die XValue als auch (Y()Value-Werte benutzt.

For i = 53 To 132               //Tabelle faengt erst bei R53 an und geht bis R132
Set xlcells = objxlwks.Cells(i, 6)
If xlcells.Value  "no_value" Then
z = z + 1
cells(z,"AA")=cells(i,"D")
cells(z,"AB")=cells(i,"F")
End If
Next i
z = z+0
objxlwkb.Sheets(station).ChartObjects("Chart 2").Activate
ActiveChart.SeriesCollection(1).Select
ActiveChart.SetSourceData Source:=Sheets(station).Range("AA1:AB" & z), PlotBy _
:=xlColumns


Das ist nur der Grundgedanke und ist nicht ausgetestet; ich belasse die Frage als noch offen und werde allenfalls ers am abend dazu kommen, zu schauen, ob sich eine Lösung gefunden hat. Unabjängih davon ist, wie Karin schon erwähnt, eine Mustermappe mit dem relavanten Programmcode hilfreich.
Gruß,
Uwe

Anzeige
AW: VB uebernimmt nicht alle Werte fuer Chart
07.11.2007 12:43:00
Marcus
Hallo,
@Karin: Morgen in der Früh werde ich die Mustermappe hochladen, da ausser win.zip nichts anderes zugelassen ist und ich nur win.rar benutze. Daher muss ich schauen, wie ich das hinbekomme. Nachdem das mehrere Seiten werden, rentiert sich ein anderer Weg gar nicht, oder?
@Uwe: Genau so wie du es in deinem ersten Absatz beschrieben hast, soll es auch laufen. z dient lediglich nur dazu, den Bereich der gueltigen Zahlen von dem der ungüligen zu trennen (taucht einmal eine ungültige auf, ist der Rest auch ungültig). Wie in deinem Beispiel genannt, werden die ersten 10 Zeilen mit gültigen Zahlen belegt und am Schluss auf 52 addiert, da es ja erst Werte ab 53 gibt. Dieser Bereich dann -F53:F62- soll als Y-Wert in dem Diagramm erscheinen.
Das Problem, das hier auftritt, ist nun folgendes. Egal wie viele Werte in der Tabelle stehen, es werden immer nur die ersten 10 Werte im Diagramm als Graph erscheinen.
Bei der X-Wert-Tabelle ist das nicht so tragisch, da wird einfach alles markiert, denn X-Werte ist bei mir die Uhrzeit, welche immer vorhanden und auch eingetragen ist. Jetzt muss nur noch JEDER Y-Wert vorkommen.
Ich hoffe dir damit ein klareres Bild von meiner Problematik darstellen zu können. Ist wirklich ein blödes Problemchen.
Vielen Dank für eure Hilfe!
Grüße,
Marcus

Anzeige
AW: VB uebernimmt nicht alle Werte fuer Chart
07.11.2007 14:50:42
ingUR
Hallo, @Markus,
für Deine Aufgabe wäre vielleicht ein DO-LOOP oder WHILE-WEND-Konstruktion besser geeigneter.
Um jedoch bei Deinem Ansatz, dann sollte eine FOR-Konstruktion geschickterweise nach dem Auftachen des ersten "no value"-Zelleninhalt verlassen werden und z nicht weiter Hochzählen bei nachfolgenden gültigen einträgen

For i = 53 To 132
Set xlcells = objxlwks.Cells(i, 6)
If xlcells.Value = "no_value" Then
Exit For
End If
z = z + 1
Next i


Vielleicht liefert dieser Ansatz die Lösung, denn bei Deinem Ansatz wird auf jeden Fall immer die Anzahl aller gültigen Werte in z gezählt.
Gruß,
Uwe

Anzeige
AW: VB uebernimmt nicht alle Werte fuer Chart
07.11.2007 15:42:11
Marcus
Hallo Uwe,
das ist natürlich auch eine Variante, wie man es lösen könnte. Ich werde es gleich morgen Früh ausprobieren und dir bescheid geben, ob es funktioniert hat, da es momentan bei mir 22:40 ist und ich mich in China befinde. Ich hoffe wirklich das es dieses Mal klappt (beide Daumen fest gedrückt).
Vielen Dank für deine Ratschläge.
Grüße,
Marcus

Hier nun der Code
08.11.2007 07:36:36
Marcus
Hallo,
hier ist nun meine gezippte Mappe. Ich kann jetzt nur noch hoffen, dass ihr bei der Fehlersuche erfolgreicher seid als ich. Vielen, vielen Dank im Voraus!
https://www.herber.de/bbs/user/47500.zip
@Uwe: Leider hat die Optimierung der Schleife auch nichts gebracht. Aber evtl klaert der Code einiges auf...
Gruesse,
Marcus

Anzeige
AW: Hier nun der Code
08.11.2007 10:33:11
Beverly
Hi Marcus,
wahrscheinlich bin ich blind, aber wo findet man deinen Code?
Bis später,
Karin

AW: Hier nun der Code
08.11.2007 10:40:00
ingUR
Hallo, Karin.
die Segmente (*frm, *.bas) sind ausgelagert in der ZIP-Datei. Komme jedoch auch nicht dazu, die gesamte Arbeitsumgebung so einzurichten, dass ich den Programmcode zum laufen bringen würde. Jedoch könnte vielleicht an meinem Beispiel die Fragestellung noch einmal von @Markus konkretisiert werden, wenn es sie nich beantwortet,
Gruß,
Uwe

AW: Hier nun der Code
08.11.2007 10:35:00
ingUR
Hallo, @Markus,
ob es jeztz daran liegt, dass ich jetzt nur min EXCEL2000 Deine Arbeitsmappe öffne oder andere Gründe hat, jedenfalls kann ich die Formulare zu dieser Arbeitsmappe nicht nachladen.
Daher hier die Grundversion der Diagrammreihenanpassung in einer eigenen Beispielsmappe:
DiagrAnpassen1
Die Fehlerabfrage (ON ERROR GOTO 20) habe ich dadurch ersetzt, dass in einer IF-Verzweeigung untersucht wird, ob mindesten ein gültiger Wert in der Reihe vorhanden ist. Es spricht m.E. nichts dagegen, für den Schleifenzähler gleich die Zeilennummer zu verwenden, so wie ich es im Beispiel eingearbeitet habe.
Schu einmal, ob das Deinen Vorstellungen von der Lösung enspricht, denn dann brauchst du nur die Teile zu ersetzen, wobei du die Teile löschen kannst, die infolge der mir fehlenden Programmumgebnung in meiner Beispieldatei expiziet gesetzt werden mußten.
Gruß,
Uwe
P.S.
Ist das dort eine BMW Vertriebs- oder Wartungsabteilung, die ggf, Zugriffmöglichkeiten auf KAT-Anlagen für ein älteren BMW-Typ hat? Wenn ja, würde ich mich über eine Kontaktaufnahme freuen (via Kontakt auf der Seite http://www.markt-daten.de ).

Anzeige
AW: Hier nun der Code
08.11.2007 17:24:30
Marcus
Hallo,
@Uwe: Sorry für die späte Antwort, doch die Zeitverschiebung macht alles ein wenig schwieriger. Dummerweise kann ich auch erst wieder am Montag an mein System, da es mir die Zeit über weggenommen wurde :-( Das erste was ich Montag Morgen machen werde, ist deinen Code zu implementieren und werde schauen, ob es hinhaut. Erst dann kann ich dir wieder ein Feedback geben. Ich hoffe du hast bis dahin nicht das Interesse verloren...
P.S. BMW-Brilliance ist in Shenyang angesiedelt und ist leider keine Vertriebs- oder Wartungsabteilung, sondern ein weiteres Produktionswerk. Wenn du magst kann ich mich aber trotzdem mal schlau machen, wo es soetwas in China geben könnte.
@Karin: Der Code befindet sich im Zip-File im Ordner "program files 2.0" und heisst "Module 1.bas". Vielleicht hilft das...
Ich wünschte euch mehr Ratschläge geben zu können, doch mehr hab ich leider nicht.
Vielen Dank für eure tatkräftige Unterstützung.
Grüße aus dem smokigen Shenyang,
Marcus
Anzeige

38 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige