VBA Makro: Ausgeblendete Zeilen überspringen

bzw. genau fehlermeldung:

bezug ungültig wert muss aus einer reihe oder spalte kommen

Grüezi mis0r

hast du dir die spinnendiagramm bereich angesehen vielleicht
verstehe cih dich nícht ganz aber wenn ich den bereich bei
einem einfach hinunter ziehe nimmt er die daten nicht

Ja, klar geht das nicht, weil dein Diagramm ja schon per VBA ‚verhunzt‘ worden ist… :wink:

Markiere mal die folgenden Bereiche in der Demo-Mappe:

B4:B21 und gleichzeitig auch BI4:BM21

Erstelle nun ein neues Netz-Diagramm und wähle dann im zweiten Schritt, dass die Daten in Zeilen liegen und nicht in Spalten.

Nun hast du ein Diagramm mit so vielen Datenreihen wie es Zeilen gibt.

Blendest du nun über den Autofilter in Spalte A einige Zeilen aus, so sind diese im Diagramm nicht mehr dargestellt.

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

funktioniert das auch, wenn ich den kopieren button verwende?

der kopiert mir in data von import die mittelwerte immmer in zeile 4 und verschiebt den rest der tabelle nach unten.

Der diagrammbereich wird somit auch nach unten verschoben und somit gehts wieda nicht.

oder täuscht mich das?

Grüezi mis0r

Welche Exel-Version verwendest Du - der Datei nach zu urteilen dürfte das xl2007 oder jünger sein.

funktioniert das auch, wenn ich den kopieren button verwende?

Keine Ahnung, weiss ja nicht was der so tut… :wink:

der kopiert mir in data von import die mittelwerte immmer in
zeile 4 und verschiebt den rest der tabelle nach unten.

Der diagrammbereich wird somit auch nach unten verschoben und
somit gehts wieda nicht.

oder täuscht mich das?

Musst Du ausprobieren - Du kannst ja das Diagramm bereits in Zeile 3 als erste Datenreihe beginnen lassen, und diese immer ausblenden.
Dann werden Zeilen die dazwischen eingeschoben werden den Datenbereich einfach vergrössern.

Ansonsten gehören bei einer klar strukturierten Liste neue Daten immer ans Ende - ggf kann man dann sortieren um sie nach oben zu bringen.

Bitte teste das Ganze doch selbst auch mal, statt uns hier mit prophylaktischen Fragen zu ‚beschäftigen‘… :wink:

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Hallo Michael,

Tut mir leid,wenn du das in den falschen hals reinbekommen
hast.

nein, hab ich nicht. Sieh es bitte als wohlgemeinte hilfreiche kritik mit Hintergrundinformationen wraum ich was kritisiere.

Filtern tun wir mit
dem Bereich A4:A200 wenn wir 1 in die zellen reinschreiben
wollen wir genau diese angezeigt bekommen.

Das bekam ich irgendwie nicht mit, sorry.

bzw. könntest du cheops und bosch aus
deinem alten beitrag rausnehmen? da ich die vergessenhabe zu
löschen :frowning:

Kann ich nicht aber Thomas. klicke in einem Beitrag von ihm rechts davon auf das Briefsysmbol und bitte ihn um „Schwärzung“ o.ä.

Und Thomas wiederholt nicht ohne Grund einen Beitrag von ihm, totsicher steckt da deine lösung drin.
Diese Lösung kann logischerweise nur dann korrekt funktionieren wenn all das was Thomas annimmt auch bei dir so vorliegt.

Wenn dem nicht so ist bzw. du verschweigst was was für uns wichtig ist, klar haste dann Umsetzungsprobleme.

Gruß
Reinhard

Hallo Leute ich möchte mich für den tollen support bedanken!!!

Ich habs hingekriegt! Die Lösung steckte in deinem Makro :smile:.

Der Vorschlag von Thomas hätte auch funktioniert. Leider wird aber mit jedem neuen Test eine Zeile oben eingefügt und der Diagrammbereich schiebt sich eine Zeile nach unten und die oberste Zeile wird dann leider vernachlässigt…

Trotzdem vielen Dank an euch beide, dass Ihr mir trotz meiner vagen angaben so gut geholfen habt.

Der finale code mit dem es Funktioniert:

Sub Diagrammbereich1\_neu()

'Überschreibt die Zielwerte
Dim Zeile As Long, Zelle As Range, I As Integer, oBlatt As Worksheet, cht As Chart

On Error GoTo hell

Set oBlatt = Tabelle1
With oBlatt
 .Range("BC3").FormulaLocal = "=AV4/1000" 'Heat\_Flux
 .Range("BD3").FormulaLocal = "=AW4" 'HC\_FLux
 .Range("BE3").FormulaLocal = "=AX4" 'NOx\_Flux
 .Range("BF3").FormulaLocal = "=AY4\*1000" 'SM\_VAL2
 .Range("BG3").FormulaLocal = "=AZ4" 'VPI


' Löschen des Diagrammbereichs1 bis auf einen(Zielwert)
 Set cht = Diagramm1 'Diagramm1
 With cht
 For I = .SeriesCollection.Count To 1 Step -1
 If I \> 1 Then .SeriesCollection(I).Delete
 Next I
 End With


'Erstellt neuen Diagrammbereich1
 On Error Resume Next
 For Each Zelle In .Range("B4:B200").SpecialCells(xlCellTypeVisible)
 Zeile = Zelle.Row
 I = I + 1
 cht.ChartArea.Select
 cht.SeriesCollection.NewSeries
 cht.SeriesCollection(I + 1).Name = "=Data!$B$" & CStr(Zeile)
 cht.SeriesCollection(I + 1).Values = "=Data!$BI$" & CStr(Zeile) & ":blush:BM$" & CStr(Zeile)
 cht.SeriesCollection(I + 1).XValues = "=Data!$BI$1:blush:BM$2"
 cht.SeriesCollection(1).Interior.ColorIndex = 34
 Next Zelle
 On Error GoTo hell
End With


hell:
If Err.Number 0 Then MsgBox Err.Number & vbCr & Err.Description


Set oBlatt = Nothing
Set cht = Nothing





End Sub

Danke noch mal und Grüße