VBA: wertaus zelle, aber variable zeile
#1
Hallo zusammen,

brauch mal Hilfe.

Der nachfolgende Code sollte so verändert werden, dass nicht das Tablbatt direkt angesprochen wird, sondern entnehme den Wert Tabblatt "Depot" aus markierter Zeile und aus Spalte E (Werte aus Spalte E sind identisch mit den Tabblatt-Namen.
Was muss ich anstelle - Sheet("HD") - im Code ändern?

Code:
.SetSourceData Source:=Sheets("HD").Range("A1:A261,G1:G261")

Danke schon mal im Voraus!!!
Top
#2
Hallo Bernie,

versuchs mal so
Code:
.SetSourceData Source:=Sheets(Worksheets("Depot").Cells(ActiveCell.Row, 5).Value).Range("A1:A261,G1:G261")
Gruß Stefan
Win 10 / Office 2016
Top
#3
Hallo Stefan,

Danke für die Hilfe.

leider bekomme Fehlermeldung und zwar ... "Objekt oder With-Blockvariable nicht festgelegt"

Hier mal der ganze Code
Code:
Sub Chart_neu()
  Sheets("Chart-Vorschau").Visible = True
  With Charts.Add
    .ChartType = xlLine
    .SetSourceData Source:=Sheets(Worksheets("Depot").Cells(ActiveCell.Row, 5).Value).Range("A1:A261,G1:G261")
    .Location Where:=xlLocationAsObject, Name:="Chart-Vorschau"
  End With
  With ActiveSheet.ChartObjects(1)
    .Left = 6
    .Top = 6
    .Width = 960
    .Height = 480
  End With
  With ActiveChart
    .HasTitle = True
    .ChartTitle.Text = Sheets("Depot").Range("B16").Value & " " & "-" & " " & "Kursverlauf 1 Jahr mit 38 und 200 Tage Trendlinien"
    .ChartArea.Select
    .Legend.Select
    Selection.Position = xlTop
    .Axes(xlCategory).MajorUnitScale = xlDays
    .Axes(xlCategory).MajorUnit = 7

  End With
  Call trendlinien
  
End Sub

Übrigens beim Charttitel müsste ich auch geändert haben und zwar "aktive Zeile - Wert in Spalte 2".
Top
#4
Hallo,

durch das Chart.Add ist die Tabelle nicht mehr aktiv und ein Chart hat keine Row-Eigenschaft. Ein wenig waklig ist meine Codeänderung trotzdem, da Du vor dem Charterstellen eine Tabelle einblendest und ich nicht weiß, welche Tabelle dann aktiv ist und von welcher Tabelle Du überhaupt die aktive Zeile brauchst aber versuche es mal so
Code:
Sub Chart_neu()
   Dim lngRow As Long
  
   lngRow = ActiveCell.Row
   Sheets("Chart-Vorschau").Visible = True
'   lngRow = ActiveCell.Row
   With Charts.Add
     .ChartType = xlLine
     .SetSourceData Source:=Sheets(Worksheets("Depot").Cells(lngRow, 5).Value).Range("A1:A261,G1:G261")
     .Location Where:=xlLocationAsObject, Name:="Chart-Vorschau"
   End With
   With ActiveSheet.ChartObjects(1)
     .Left = 6
     .Top = 6
     .Width = 960
     .Height = 480
   End With
   With ActiveChart
     .HasTitle = True
     .ChartTitle.Text = Sheets("Depot").Cells(lngRow, 2).Value & " " & "-" & " " & "Kursverlauf 1 Jahr mit 38 und 200 Tage Trendlinien"
     .ChartArea.Select
     .Legend.Select
     Selection.Position = xlTop
     .Axes(xlCategory).MajorUnitScale = xlDays
     .Axes(xlCategory).MajorUnit = 7

  End With
   Call trendlinien
  
End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#5
Hallo Stefan,

bekomme Fehlermeldung "Index außerhalb gültigen Bereichs"

Zitat:von welcher Tabelle Du überhaupt die aktive Zeile brauchst

Ich rufe von Tab "Depot" über Button das Makro auf und somit die Tabelle "Chart-Vorschau". Das Makro erstellt in Tabelle "Chart-Vorschau" mein Diagramm. Bis dahin hat alles geklappt.

Was ich variable haben wollte ist 1. "SetSourceData Source" und 2. "ChartTitle.Text".

1. Ist Tabelle "Depot" Spalte E
2. Ist Tabelle "Depot" Spalte B

...jeweils die aktive Zeile (erste Zeile ist Nr. 3 und letzte Nr. 32), wird vorher mit Mausklick markiert bevor das Makro startet.


Depot
BCDE
2NameBrancheIndizesKürzel
3Home DepotHandelDow JonesHD
4IntelTechnologieDow JonesINTC
5Merck & CoChemie / PharmaDow JonesMRK
6MicrosoftTechnologieDow JonesMSFT
7NikeKonsumgüterDow JonesNKE
8BayerChemie / PharmaDaxBAYN.DE
9CommerzbankFinanzsektorDaxCBK.DE
10RWEVersorgerDaxRWE.DE
11ThyssenKruppIndustrieDaxTKA.DE
12LPKF LaserTechnologieTecDaxLPK.DE
13ManzIndustrieTecDaxM5Z.DE
14MorphosysChemie / PharmaTecDaxMOR.DE
15NemetschekSoftwareTecDaxNEM.DE
16STRATEC BiomedicalGesundheitswesenTecDaxSBS.DE
17Aareal BankFinanzsektorMDaxARL.DE
18FielmannHandelMDaxFIE.DE
19GagfahDiverseMDaxGFJ.DE
20Kabel DeutschlandMedien / Entertainment / FreizeitMDaxKD8.DE
21KukaIndustrieMDaxKU2.DE
22LEG ImmobilienDiverseMDaxLEG.DE

verwendete Formeln
Zelle Formel Bereich N/A
C3=WENN($B3="";"";SVERWEIS($B3;Kürzel!$A:$E;3;0))
C4:C22=WENN(B4="";"";SVERWEIS(B4;Kürzel!A:E;3;0))
D3: D22=WENN($B3="";"";SVERWEIS($B3;Kürzel!$A:$E;2;0))
E3:E22=WENN($B3="";"";SVERWEIS($B3;Kürzel!$A:$E;4;0))
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 18.19 einschl. 64 Bit

Top
#6
Hallo Bernie,

in welcher Codezeile taucht der Fehler auf?

(22.10.2014, 15:30)Bernie schrieb: Ich rufe von Tab "Depot" über Button das Makro auf und somit die Tabelle "Chart-Vorschau". Das Makro erstellt in Tabelle "Chart-Vorschau" mein Diagramm. Bis dahin hat alles geklappt.

Ich habe dies auf Excel 2010 und jetzt auf Excel 2007 getestet. Bei mir wird ein eigenständiges Diagrammblatt angelegt HuhHuhHuhHuh
Gruß Stefan
Win 10 / Office 2016
Top
#7
Hallöchen,

wo kommt denn
"Index außerhalb gültigen Bereichs" ??
Als erstes vermute ich, wenn mir Excel so eine Meldung bringt, einen Fehler z.B. im Blattnamen oder Blattindex.
Der Fehler kommt also vermutlich in dieser Zeile:
.SetSourceData Source:=Sheets(Worksheets("Depot").Cells(lngRow, 5).Value).Range("A1:A261,G1:G261")
und in Spalte E ist eventuell eine leere Zelle markiert gewesen oder dort steht ein Blattname, der ein Leerzeichen zuviel hat, oder ein Schreibfehler hat sich eingeschlichen, oder ...

Das
" " & "-" & " " & "Kursverlauf 1 Jahr mit 38 und 200 Tage Trendlinien"
kannst Du übrigens zusammenziehen:
" - Kursverlauf 1 Jahr mit 38 und 200 Tage Trendlinien"
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#8
Hallo Ihr Beiden,

danke schon mal für Eure Bemühungen.

Hier meine Testmappe.


Angehängte Dateien
.xlsm   TestDiagramm.xlsm (Größe: 160,5 KB / Downloads: 3)
Top
#9
Hallo Bernie,

Der Button "Diagramm erzeugen" ruft aber ein Makro einer anderen Mappe auf Sad BK...verwaltung.xlsm
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#10
Hallo Bernie,

hab's gerade gefunden - im mdl_CreateChart. Dachte doch, das wäre dem Button zugeordnet ...

Wenn ich darauf achte, das vor dem Start das Blatt Depot aktiv ist und auch eine entsprechend gefüllte Zelle in Spalte E, dann läuft es. Hat bei E3 bis E7 geklappt.

Wenn nicht, kommt, wie von mir beschrieben, ein Fehler.
"...und in Spalte E ist eventuell eine leere Zelle markiert gewesen..." --> sprich leere "Zeile"
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste