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

Dynamische Diagramme einfügen

Dynamische Diagramme einfügen
08.05.2008 14:27:54
Jörg
Hallo zusammen
folgendes Problem:
Ich habe ein Makro, welches verschiedene Tabellenblätter innerhalb einer Mappe aus anderen Mappen fortschreibt.
Zur Veranschaulichung benötige ich in jedem Blatt ein Diagramm.
Hier kann ich jedoch nur statische Anweisungen geben, welche Zelle gemeint ist. wie kann ich hier bereiche umsetzen?
Ich habe bereits weiter oben im makro diesen Zellen Namen vergeben:
Cells(14, i + 1) = umsatzbar
Cells(15, i + 1) = UmsatzKarte
Cells(16, i + 1) = davondebit
Cells(17, i + 1) = davoncredit
Doch irgendwie klappt das Ansprechen nicht. :(
ActiveChart.SetSourceData Source:=Sheets(Land).Range( _
umsatzbar, davondebit & ":" & davoncredit, "B14,B16:B17"), PlotBy:=xlColumns
Den Teil "B14,B16:B17" muss ich nicht variabel gestalten, da es sich hierbei um die Beschriftung handelt.
Kopfzerbrechen bereitet mir nur
umsatzbar, davondebit & ":" & davoncredit
Hier erscheint der Laufzeitfehler 450 (Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft)
Ich hoffe ihr könnt mir helfen.
Gruß
Jörg

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamische Diagramme einfügen
08.05.2008 14:34:48
Rudi
Hallo,
warum dynamisierst du deine Diagramme nicht einfach mit dynamischen Namen?
Gruß
Rudi

AW: Dynamische Diagramme einfügen
08.05.2008 14:43:00
Jörg
Wenn du mir erklärst wie das funktioniert?

AW: Dynamische Diagramme einfügen
08.05.2008 14:59:54
Rudi
Hallo
Excel-Profi - VBA gut?
100e Beispiele im Web.
kennst du GOOGLE?
Gruß
Rudi

AW: Dynamische Diagramme einfügen
08.05.2008 15:00:00
Jörg
Super Hilfe.
Danke

AW: 22.800 Treffer für
08.05.2008 15:06:43
Jörg
Ist ja ok.
Mir gehts nicht um die Erweiterung eines Diagrammes sondern um die NEUANLAGE!

AW: 22.800 Treffer für
08.05.2008 15:19:11
Jörg
Das Blatt sieht folgendermaßen aus
DATEN1 DATEN1 DATEN1 DATEN1 DATEN2 DATEN2 DATEN2 DATEN2 ....
DATEN1 DATEN1 DATEN1 DATEN1 DATEN2 DATEN2 DATEN2 DATEN2 ....
DATEN1 DATEN1 DATEN1 DATEN1 DATEN2 DATEN2 DATEN2 DATEN2 ....
DATEN1 DATEN1 DATEN1 DATEN1 DATEN2 DATEN2 DATEN2 DATEN2 ....
DIAGRAMM zu DATEN1 DIAGRAMM zu DATEN2
Das Blatt wird immer weiter nach Rechts gefüllt und soll zu jedem DATEN-Block ein EIGENES Diagramm erhalten.

Anzeige
Interessanter Aufbau ;-) um was geht's? (owT)
08.05.2008 15:23:00
Renee

AW: Interessanter Aufbau ;-) um was geht's? (owT)
08.05.2008 15:33:30
Jörg
Es geht um Umsätze einzelner Länder. Die Tabellenblätter repräsentieren im Endeffekt jeweils ein Land.
Dann sind die Umsatzzahlen für die einzelnen Monate nach rechts laufend nebeneinander.
Hierbei ist jedoch nochmal untergliedert so dass sich jeder Datenblock aus 5 * 7 Zellen zusammensetzt.
Und über einen Teil jedes Datenblocks muss das Diagramm erstellt werden.

Ich hab zwar schon...
08.05.2008 15:46:00
Renee
mit dem Makrorekorder Mühe, aber ich würde dir gerne helfen.
Was steht denn in den Variablen Land, umsatzbar, davondebit und davoncredit drin ?
GreetZ Renée

Anzeige
AW: Ich hab zwar schon...
08.05.2008 15:56:00
Jörg
Land ist ein zweistelliger Code für das jeweilge Land der Umsatzzahlen (z.b. RO (Rumänien), CZ (Tschechien),..)
umsatzbar - soll eigentlich nur auf eine zelle verlinken in der der barumsatz als zahlt steht
davondebit - s.o. nur dass hier debitkarten gemeint sind
davoncredit - s.o. nur dass hier kreditkarten gemeint sind.

AW: Ich hab zwar schon...
08.05.2008 16:01:49
Renee
Hi Jörg,
ich hab nicht gefragt "was könnte drin stehen", sondern was steht drin? Im Debugger!
Was soll dann zum Beispiel der Wert eines Barumsatzes in einer Data Source ?
Und warum schreibst du die Werte der Variablen in Zellen des Blatt's ?
Hast du auch schon den Makrorekorder benutzt ?
Gibt's auch ne Gesamtansicht, von deinem Code oder ist das bei Profi's geheim ?
GreetZ Renée

Anzeige
AW: Ich hab zwar schon...
08.05.2008 16:04:00
Jörg
Hier mal die Gesamtansicht.
Aber wie gesagt, das einzige Problem liegt im allerletzten Teil.

Sub Monatsübersicht()
Application.ScreenUpdating = False
Dim Datum As Date
Monat = Application.InputBox("Bitte nächsten einzufügenden Monat (MM) eingeben:")
Jahr = Application.InputBox("Bitte nächsten einzufügenden Jahr (JJ) eingeben:")
ThisWorkbook.Activate
Path = ThisWorkbook.Path
For i = 2 To 1000000
If Cells(12, i) = "Durchschnittsbon" Then
If Cells(12, i + 1) = "Betrag in T EUR" Then GoTo nächstesi
If Cells(12, i + 1) = "Betrag in TEUR" Then GoTo nächstesi
If Cells(12, i + 1) = "Betrag in EUR" Then GoTo nächstesi
If Cells(12, i + 1) = "Betrag in T LW" Then GoTo nächstesi
If Cells(12, i + 1) = "Betrag in TLW" Then GoTo nächstesi
GoTo Kopieren
End If
nächstesi:
Next i
Kopieren:
For L = 1 To 5
If L = 1 Then Land = "SK"
If L = 2 Then Land = "HR"
If L = 3 Then Land = "PL"
If L = 4 Then Land = "RO"
If L = 5 Then Land = "BG"
ThisWorkbook.Activate
Worksheets(Land).Activate
Worksheets(Land).Range("C11:F21").Copy _
Destination:=Worksheets(Land).Range(Cells(11, i + 1), Cells(21, i + 4))
For j = i + 1 To i + 5
With Worksheets(Land).Columns(j)
.ColumnWidth = 20
End With
Next j
Workbooks.Open Filename:=(Path & "\Kartenzahlung " & Jahr & Monat) 'Zielfile wird geöffnet
Worksheets(Land & " " & Monat & Jahr).Activate
DebitF = Cells(28, 9)
VisaF = Cells(32, 9)
MasterCardF = Cells(33, 9)
AmexF = Cells(34, 9)
DinersF = Cells(35, 9)
Umsatzbrutto = Cells(45, 3)
umsatzbar = Cells(46, 3)
UmsatzKarte = Cells(47, 3)
davondebit = Cells(48, 3)
davoncredit = Cells(53, 3)
Visa = Cells(54, 3)
MasterCard = Cells(55, 3)
Amex = Cells(56, 3)
Diners = Cells(57, 3)
TUmsatzbrutto = Cells(45, 10)
TUmsatzbar = Cells(46, 10)
TUmsatzKarte = Cells(47, 10)
Tdavondebit = Cells(48, 10)
Tdavoncredit = Cells(53, 10)
TVisa = Cells(54, 10)
TMasterCard = Cells(55, 10)
TAmex = Cells(56, 10)
TDiners = Cells(57, 10)
BUmsatzbrutto = Cells(45, 17)
BUmsatzbar = Cells(46, 17)
BUmsatzKarte = Cells(47, 17)
Bdavondebit = Cells(48, 17)
Bdavoncredit = Cells(53, 17)
BVisa = Cells(54, 17)
BMasterCard = Cells(55, 17)
BAmex = Cells(56, 17)
BDiners = Cells(57, 17)
ThisWorkbook.Activate
Worksheets(Land).Activate
Cells(13, i + 1) = Umsatzbrutto
Cells(14, i + 1) = umsatzbar
Cells(15, i + 1) = UmsatzKarte
Cells(16, i + 1) = davondebit
Cells(17, i + 1) = davoncredit
Cells(18, i + 1) = Visa
Cells(19, i + 1) = MasterCard
Cells(20, i + 1) = Amex
Cells(21, i + 1) = Diners
Cells(16, i + 2) = DebitF
Cells(18, i + 2) = VisaF
Cells(19, i + 2) = MasterCardF
Cells(20, i + 2) = AmexF
Cells(21, i + 2) = DinersF
Cells(13, i + 3) = TUmsatzbrutto
Cells(14, i + 3) = TUmsatzbar
Cells(15, i + 3) = TUmsatzKarte
Cells(16, i + 3) = Tdavondebit
Cells(17, i + 3) = Tdavoncredit
Cells(18, i + 3) = TVisa
Cells(19, i + 3) = TMasterCard
Cells(20, i + 3) = TAmex
Cells(21, i + 3) = TDiners
Cells(13, i + 4) = BUmsatzbrutto
Cells(14, i + 4) = BUmsatzbar
Cells(15, i + 4) = BUmsatzKarte
Cells(16, i + 4) = Bdavondebit
Cells(17, i + 4) = Bdavoncredit
Cells(18, i + 4) = BVisa
Cells(19, i + 4) = BMasterCard
Cells(20, i + 4) = BAmex
Cells(21, i + 4) = BDiners
Datum = "01." & Monat & "." & Jahr
Cells(11, i + 1) = Datum
Next L
For Each w In Workbooks   'alle Workbooks bis auf das aus dem VBA ausgeführt wird, werden  _
geschlossen
If w.Name  ThisWorkbook.Name Then
w.Close savechanges:=True
End If
Next w
L = 1
For L = 1 To 5
If L = 1 Then Land = "SK"
If L = 2 Then Land = "HR"
If L = 3 Then Land = "PL"
If L = 4 Then Land = "RO"
If L = 5 Then Land = "BG"
Worksheets(Land).Activate
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
ActiveWindow.Visible = False
Cells(22, i + 1).Select
ActiveSheet.Paste
ActiveSheet.Activate
ActiveChart.SeriesCollection(1).Select
ActiveChart.SetSourceData Source:=Sheets(Land).Range( _
umsatzbar, davondebit & ":" & davoncredit, "B14,B16:B17"), PlotBy:=xlColumns
Next L
End Sub


Anzeige
AW: Ich hab zwar schon...
08.05.2008 16:13:00
Rudi
aus einer früheren Antwort:

Mir gehts nicht um die Erweiterung eines Diagrammes sondern um die NEUANLAGE!


laut deinem Code sind die Diagramme doch schon vorhanden!
Es reicht also, die vorh. Diagramme zu dynamisieren.
Gruß
Rudi

AW: Ich hab zwar schon...
08.05.2008 16:18:25
Jörg
Vorhanden sind die Diagramme aber die werden nur kopiert um dann danach bei der Kopie die Quelle zu ändern (so soll die Formatierung exakt gleich sein).
Zur Veranschaulichung nochmal: Es handelt sich um Kreisdiagramme die später pro Land 12 mal nebeneinander stehen sollen (1 für jeden Monat).
Sorry wegen den Erklärungen, aber ich glaub ich geh da grad iwie zu betriebsblind dran.

Anzeige
Sorry, da kann ich nicht...
08.05.2008 16:20:00
Renee
mehr mithalten, Jörg.
Nur schon bei diesem Codeausschnitt:

For i = 2 To 1000000
If Cells(12, i) = "Durchschnittsbon" Then
If Cells(12, i + 1) = "Betrag in T EUR" Then GoTo nächstesi
If Cells(12, i + 1) = "Betrag in TEUR" Then GoTo nächstesi
If Cells(12, i + 1) = "Betrag in EUR" Then GoTo nächstesi
If Cells(12, i + 1) = "Betrag in T LW" Then GoTo nächstesi
If Cells(12, i + 1) = "Betrag in TLW" Then GoTo nächstesi
GoTo Kopieren
End If
nächstesi:
Next i
Kopieren:

haben miene Hirnzellen kurzgeschlossen.
GreetZ Renée

Anzeige
OT profis
08.05.2008 16:19:07
Reinhard
Grüezie Renée,
vor dem Durchlesen, naja Überfliegen, dieses Artikels:
http://de.wikipedia.org/wiki/Apostrophitis
hätte ich geschworen daß es Profis heißt und nicht Profi's, aber nach der Lektüre bin ich mir gar nicht mehr sicher -))
Und grad du kannst dich ja sowieso leicht herausreden, ich habe hier nämlich kein schweizer Idiotikon *lächel*
PS.: Bin ja gespannt wieviele Beiträgswechsel noch nötig sind bis man eine Anfrage herausgekitzelt hat die das Problem erstmalig so darstellt dß man/frau es überhaupt lösen könnte...
Gruß
Reinhard

Anzeige
AW: OT Profi's
08.05.2008 16:33:00
Renee
Hallo Reinhard,
Wenn ich mich nicht gerade vertippse versuch ich nur so gut wie möglich (st nicht schweizer) deutsch, dumm und dämlich zu schreiben ;-)
Wenn du noch keins hast, hier kannst du eins bestellen!
GreetZ Renée

Danke dir für den Link :-) o.w.T.
09.05.2008 15:22:04
Reinhard

du solltest mal ...
08.05.2008 16:04:10
Rudi
...alles vergessen, was du über deine Tabellen weißt, den kompletten Thread durchlesen und versuchen zu verstehen, was du willst.
Ich bin zu blöd dazu.
Gruß
Rudi

Nur 918 bei Herber ;-) (owT)
08.05.2008 15:14:12
Renee

AW: Dynamische Diagramme einfügen
08.05.2008 21:41:06
Reinhard
Hi Jörg,
wir sind ja nicht grundsätzlich böse, *grübel*, naja, zumindest ich nicht *grins*
Leider war mit deinen bisherigen Angaben nichts für Außenstehende anzufangen und du hast es ja auch erkannt als u schriebst daß du da betriebsblind o.ä. bist.
Na und, das ist völlig normal, wenn man in eine Problematik zu tief verstrickt ist, dann sieht/erkennt man nix mehr auch wenn die Lösung vor einem steht, Wald vor lauter Bäumen nicht sehen usw.
Nimm den Tipp von Rudi an, druck dir die Beitragsfolge aus und frage dich oder irgendjemanden deines Vertrauens, völlig wurscht ob er jemals was von Excel gehört hat, also einer der dir auch die Wahrheit sagt und frage ihn/sie ob er/sie erkennt was du eigentlich willst.
Und zieh dich nicht schmollend in eine Ecke zurück, keiner will mir helfen, nö, wenn wir dir nicht helfen wollten hätten wir schlichtweg nix geschrieben/geantwortet.
Gruß
Reinhard

Anzeige
AW: Dynamische Diagramme einfügen
09.05.2008 07:24:00
Jörg
Hi nochmal zusammen,
hab mir nochmal ein paar Gedanken gemacht.
Ok, ich hoffe ich kriege jetzt eine verständliche Erklärung hin:
Ich habe ein Tabellenblatt mit verschiedenen wirtschaftlichen Zahlen aus einem Land, darunter ist ein Kreisdiagramm das Teile der Zahlen auswerten soll.
Soweit so gut, hoffe ich.
Diese Zahlen werden einmal pro Monat erhoben, so dass ich je Geschäftsjahr am Ende 12 Kreisdiagramme auf dem Tabellenblatt brauche.
Mein Ansatz war nun folgender: Der erste Monat wird manuell eingetragen. Den Rest der Monate holt man sich komplett über ein Makro aus den Quelltabellenblättern. Um die Diagramme zu realisieren habe ich das erste Diagramm kopiert.
Hier hänge ich jetzt, an der Stelle wo ich die Quelle des Diagrammes ändern will.
Ich habe schonmal folgenden Zellen Variablen zugewiesen.
Cells(14, i + 1) = umsatzbar
Cells(15, i + 1) = UmsatzKarte
Cells(16, i + 1) = davondebit
Cells(17, i + 1) = davoncredit
Und hier kommt nun de Bereich mit dem ich nicht weiterkomme:
ActiveChart.SetSourceData Source:=Sheets(Land).Range( _
umsatzbar, davondebit & ":" & davoncredit, "B14,B16:B17"), PlotBy:=xlColumns
Ich bräuchte schlichtweg eine andere Auflösung als diesen Teil hier:
_umsatzbar, davondebit & ":" & davoncredit,
Ich hoffe das war verständlich (Ein Kollege hat gerade drübergelesen und gemeint ja).

AW: Dynamische Diagramme einfügen
09.05.2008 07:40:00
Renee
Hi Jörg,
Sorry, aber deine neue Beschreibung weicht nicht allzu sehr von den vorherigen ab.
ActiveChart.SetSourceData Source:=SourceRange verlangt das du mitteilst wo sich die Quelldaten für das Diagramm befinden, d.h. es will keine Zahlen aus Zellen, sondern Adressen dieser Zellen (von-bis). Mit deiner Zuweisung von Variablen zu Zellen füllst du aber IMHO Zahlen ab. Was du dir im Code merken musst sind die Adressen, um diese dann an das Diagramm weiterzugeben.
GreetZ Renée

AW: Dynamische Diagramme einfügen
09.05.2008 08:42:54
Jörg
Genau das mein ich mit Betriebsblind :)
Ich habs jetzt mal wie folgt abgeändert:
Cells(14, i + 1).Activate
zelladresse = ActiveCell.Address(0, 0)
Cells(16, i + 1).Activate
zelladresse2 = ActiveCell.Address(0, 0)
Cells(17, i + 1).Activate
zelladresse3 = ActiveCell.Address(0, 0)
quelle = ("_" & zelladresse & "," & zelladresse2 & ":" & zelladresse3 & ",")
Worksheets(Land).Activate
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
ActiveWindow.Visible = False
Cells(22, i + 1).Select
ActiveSheet.Paste
ActiveSheet.Activate
ActiveChart.SeriesCollection(1).Select
ActiveChart.SetSourceData Source:=Sheets(Land).Range(quelle & "B14,B16:B17"), PlotBy:=xlColumns
Leider funktioniert die übergabe absolut nicht wie gewünscht. Im Debugger sehe ich zwar für quelle die richtigen Zellkoordinaten ich bekomme jedoch immer noch einen Laufzeitfehler 1004 (Anwendungs- oder objektdefinierter Fehler)

AW: Dynamische Diagramme einfügen
09.05.2008 09:44:00
Renee
Hi Jörg,
  • Zuerst mal ein Ansatz für die Lösung:

  • 
    das ganze Gefrickel mit .Activate, Activecell, zelleaddresse, etc. wegschiessen!
    ActiveChart.SetSourceData Source:=Sheets(Land).Range("$B$14,$B$16:$B$17," & _
    Sheets(Land).Cells(14, i + 1).Address & "," & _
    Sheets(Land).Cells(16, i + 1).Address & ":" & Sheets(Land).Cells(17, i + 1).Address),  _
    PlotBy:=xlColumns
    


    Ob das aber die gewünschte Lösung bringt, bin ich mir relative unsicher, denn wenn ich den Code anschaue, wie du die Variablei bestimmst, wird mir schlecht. Denn es ist bis und mit Excel 2003 nicht möglich mehr als 256 Spalten zu haben und dein Index läuft bis zu 1 Million!

  • Dann zu diesem ganzen Thread:

  • Genau das mein ich mit Betriebsblind :) und dein Level Excel Profi - VBA gut
    Es kommt leider nur allzuoft vor, dass sich Leute hier in der Einschätzung der Kentnisse total überschätzen.
    Von einem Excel Profierwarte ich:
    Weiss wie Diagramme zu dynamisieren.
    Weiss den Unterschied zwischen Format und Zellinhalt.
    Versucht soviel wie möglich mit EXCEL-Standardmitteln, statt mit VBA abzudecken.
    Von jemandem mit VBA gut erwarte ich:
    Kennt die grobe Objektstruktur von EXCEL.
    Kennt Datentypen.
    Weiss wie ohne .Select und .Activate Objekte zu referenzieren.
    Weiss den Unterschied zwischen Objekt, Eigenschaft und Methode.
    So das wär's, vielleicht überschätze ich ja meinen Level komplett und damit wird der ganze 2te Teil hinfällig.
    GreetZ Renée

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige