Anzeige
Archiv - Navigation
1204to1208
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
Inhaltsverzeichnis

Objektanpassung per VBA

Objektanpassung per VBA
Martin
Hallo VBA'ler,
ich mal wieder ^^ !
Aktuell füge ich per Makro Teilnehmer zu einer Liste. Mit einem weiteren Makro entferne ich auch Teilnehmer.
Folgende Anforderung kommt hinzu: Wenn ich per Makro einen Teilnehmer hinzufüge muss bei zwei Tabellenblättern der Datenbereich um eins erweitert werden, bei Entfernen per Makro muss der Datenbereich um eins verringert werden. Per Makrorekorder habe ich dazu folgende Zeilen extrahieren können:
Teilnehmer hinzufügen

Sub TEMP()
Tabelle22.Select
ActiveChart.SetSourceData Source:=Tabelle22.Range("A1:AX13"), _
PlotBy:=xlRows
Tabelle23.Select
ActiveChart.SetSourceData Source:=Tabelle23.Range( _
"A1:AX13"), PlotBy:=xlRows
End Sub

Kann man hier statt "A1:AX13" irgendwie "A1:"&bestehende Range + 1 programmieren?
Den umgekehrten Ablauf benötige ich dann auch für Teilnehmer entfernen, quasi: "A1:"&bestehende Range - 1
Ich hoffe, Ihr könnt mir weiterhelfen.
danke und Grüße
Martin
Ps. Wenn ich das richtig verstehe bedeutet in VBA ein underline Zeilenumbruch. Kann ich den bei den oberen beiden Zeilen auch entfernen? Gibt es eine Spalte, bis zu der eine Programmzeile maximal gehen kann?
AW: Objektanpassung per VBA
08.03.2011 10:06:40
Ralf_P
Hallo Martin,
ich denke es ist besser, den Teilnehmerbereich zu dynamisieren.
http://www.excelformeln.de/formeln.html?welcher=221
Dann kannst Du Dein Chart auf einen dynamischen Bereich beziehen.
VG, Ralf
AW: Objektanpassung per VBA
08.03.2011 10:17:35
Martin
Danke schon mal für den Tipp,
bitte erkläre mir, wo ich die Dynamisierung einsetze.
Ich habe versucht, folgende Formel als Datenquelle in mein Diagramm einzufügen
=INDIREKT("'Diagramm Bögen Wh.'!$A$1:$DB$"&Anzahl2($A:$DB))
Da wurde mir gesagt, dass die Formel fehlerhaft sei
AW: Objektanpassung per VBA
08.03.2011 11:01:29
Ralf_P
Du musst einen Namen definieren und dich dann als Datenquelle für dein Diagramm auf diesen (dynamischen) Namensbereich beziehen.
Beispiel wenn die Liste keine Leerzeilen enthält:
Name:Teilnehmer
bezieht sich auf:=INDIREKT("A1:A"&Anzahl2($A:$A))
Jetzt kannst du als Datenquelle angeben:
= =Tabelle1!Teilnehmer
egal wie viele Teilnehmer in Spalte A eingetragen sind, es wird der richtige Bereich übernommen.
Siehe auch hier:
http://www.office-loesung.de/ftopic55265_0_0_asc.php
VG, Ralf
Anzeige
AW: Objektanpassung per VBA
08.03.2011 11:26:48
Martin
Danke für die Info,
leider bekomme ich bei der Indirekt-Formel nur #wert. Ich habe keine Ahnung warum.
nachdem ich mir den anzahl2-Teil der Formel angesehen habe ist mir aber aufgefallen, dass ich die Formel so nicht verwenden kann. In Zelle A2 steht folgendes
=WENN(Übersicht!A3="";"";Übersicht!A3)
In den folgenden Zeilen ist die Formel fortgeführt. Die o.g. Formel zählt das als gefüllte Zelle und prüft nicht, ob "" steht oder ein Name
AW: Objektanpassung per VBA
08.03.2011 11:33:27
Rudi
Hallo,
Wenn die Formel Zahlen ergibt, nimm Anzahl() statt Anzahl2().
Gruß
Rudi
AW: Objektanpassung per VBA
08.03.2011 11:51:09
Martin
Die Formel ergibt Texte. Zumindest in meiner Version zählt die Formel Anzahl2() jedoch alle Felder, in denen sich eine Formel befindet, egal ob diese "" ausgibt oder "Test"
Anzeige
AW: Objektanpassung per VBA
08.03.2011 12:17:05
Rudi
Hallo,
dann so was:
=Indirekt("A1:A" &VERWEIS(2;1/(A$1:A$1000"");ZEILE(A$1:A$1000)))
oder besser ohne INDIREKT
=INDEX(INDEX(Tabelle1!A:A;1):INDEX(Tabelle1!A:A;VERWEIS(2;1/(Tabelle1!A$1:A$1000""); ZEILE(Tabelle1!A$1:A$1000)));;)
Gruß
Rudi
AW: Objektanpassung per VBA
08.03.2011 12:57:56
Martin
Leider geben mir beide Formeln #WERT aus
=INDEX(INDEX('Diagramm Bögen Wh.'!A:A;1):INDEX('Diagramm Bögen Wh.'!A:A;VERWEIS(2; 1/('Diagramm Bögen Wh.'!A$1:A$1000""); ZEILE('Diagramm Bögen Wh.'!A$1:A$1000)));;)
Habe ich deine zweite Formel korrekt abgeändert?
Sowohl Diagramm als auch Daten befinden sich im Tabellenblatt 'Diagramm Bögen Wh.'!
Anzeige
AW: Objektanpassung per VBA
08.03.2011 13:26:50
Rudi
Hallo,
du sollst die Formeln für die Namensdefinition nehmen, nicht in der Tabelle.
Und dann den Namen als Datenquelle für die Datenreihe.
Korrekt abgeändert ist sie.
Gruß
Rudi
AW: Objektanpassung per VBA
08.03.2011 13:35:26
Martin
Die Index Formel habe ich mit dem Namen TNBogen in der Arbeitsmappe definiert. Wenn ich nun als Datenquelle des Diagramms
='Diagramm Bögen Wh.'!TNBogen
eingebe bekomme ich die Fehlermeldung, dass der Bezug ungültig ist.
Dass ich die Formel in die Tabelle eingefügt habe war nur, um zu prüfen, ob ein akzeptabler Wert herauskommt...
AW: Objektanpassung per VBA
08.03.2011 14:04:58
Ralf_P
Hallo Martin,
gib mal als Datenquelle ein:
=DeineTabelle.xls!TNBogen
VG, Ralf
Anzeige
AW: Objektanpassung per VBA
08.03.2011 14:20:31
Martin
=Anwesenheit.xls!TNBogen
oder auch
='Anwesenheit.xls'!TNBogen
Ergebnis: Bezug ist ungültig
:-(
Ich bin hier auf Terrain auf dem ich mich absolut nicht auskenne, bin aber der Meinung, dass ich eins zu eins Eure Anweisungen ausführe.
Ich habe mal von meiner riesigen 4 mb-Datei ein paar Tabellen herauskopiert. Ich hoffe, ich habe nichts weggelassen. Hier ist meine Datei:

Die Datei https://www.herber.de/bbs/user/73888.xls wurde aus Datenschutzgründen gelöscht


Vielleicht hilft Euch das, mir zu helfen :-~
Anzeige
AW: Objektanpassung per VBA
08.03.2011 15:04:34
Ralf_P
Ok, da gibt es grundsätzlich 2 Probleme:
1. sollen nur die Anzahl Teilnehmer dynamisch dargestellt werden oder
2. auch die Werte der einzelnen Teilnehmer (also in Tabelle3 nach RECHTS)
Es weiß doch niemand was Du eigentlich vorhast und meine Glaskugel ist seit einer Woche defekt.
VG, Ralf
Dynamik
08.03.2011 15:35:10
Martin
Hallo Ralf,
das, was dynamisch gehandelt werden soll ist der Objektbereich für das Diagramm (wie ich es im ersten Post erwähnte).

  • ActiveChart.SetSourceData Source:=Tabelle22.Range("A1:AX13"), _ PlotBy:=xlRows
  • Kann man hier statt "A1:AX13" irgendwie "A1:"&bestehende Range + 1 programmieren?
    Daran hat sich bislang nichts geändert.
    Ich möchte es dennoch nochmals erklären, damit es nicht zu Missverständnissen kommt:
    A1:A1 (bzw. in der Beispieldatei bereits A1:DB1 [aufgrund von Erweiterungen an anderer Stelle] sind leer, wenn in A1 kein Wert erscheint. In diesem Fall soll Zeile A1 nicht zu der Datenquelle dazugehören.
    Es mag recht kompliziert zu sein, dass für jede einzelne Zeile abzufragen.
    In meiner Datei wird es nicht vorkommen, dass zwischendurch eine Zeile blank ist. Sollte also ein Wert entfernt werden wird das der letzte sichtbare sein. Sollte ein Wert hinzugefügt werden wird dieser in der ersten leeren Zeile erscheinen.
    Das steuere ich über andere Tabellenblätter. Deshalb muss im Tabellenblatt 'Diagramm Bögen Wh.' die Wenn-Abfrage stehen.
    Ich hoffe, ich habe alle Unklarheiten beseitigen können. Des weiteren hoffe ich, dass es eine Lösung gibt, gerne auch auf VBA-Seite (wie ich es in meinem ersten Post erwähnte).
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige