Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten und Formeln in mehrere Tabellenblätter

Daten und Formeln in mehrere Tabellenblätter
09.04.2016 18:47:23
Dan
Hallo Zusammen,
ich versuche derzeit ein Template zusammenzustellen.
Dabei habe ich dynamische Bezeichnungen für die einzelnen Tabellenblätter.
Der VBA Code kann derzeit über eine Variable (i) erkennen, auf welches Tabellenblatt zugegriffen werden soll.
Nun habe ich 5 Tabellenblätter und habe eine For-Anweisung eingefügt, mit dem Ziel, dass der Code die Daten und Formeln in das erste Blatt einfügt und dann automatisch das selbe im 2,3... usw. macht.
Dazu verwende ich folgenden Code:
Dim ws As Worksheet
Dim wsName As String
Dim i As Integer, first As Integer
Dim maxRow As Integer
Dim maxTickerWS As Worksheet
Dim tickerName As Variant
Dim LastRow As Integer
Dim j As Integer
Dim m As Integer
Dim n As Integer
' i = first row with stock ticker
i = 12
'Last row which contains the stock tickers in Sheets "Parameters" Range A12:A(n)
LastRow = Sheets("Parameters").Cells(Rows.Count, "A").End(xlUp).Row
MsgBox (LastRow)
j = LastRow - i
'MsgBox (j) = 5
For i = 12 To LastRow
' set name of first stock ticker sheet
wsName = Replace(Sheets("Parameters").Range("A" & i), "^", "")
'MsgBox (wsName)
'Last row in the target sheets which contains data
maxRow = Sheets(wsName).Cells(Rows.Count, "A").End(xlUp).Row
'MsgBox (maxRow)
' m = counter to define where the calculations shall start in the sheets wsName
m = 14
wsName = Replace(Sheets("Parameters").Range("A" & i), "^", "")
'MsgBox (wsName)
' 12 Day EMA
Sheets(wsName).Cells(2, 8) = "12 Day EMA"
Sheets(wsName).Cells(m, 8).Formula = "=AVERAGE(E3:E14)"
Sheets(wsName).Range(Cells(m + 1, 8), Cells(maxRow, 8)).Formula = "=E15*(2/(12+1))+H14*(1-(2/(12+1)))"
' 26 Day EMA
Sheets(wsName).Cells(2, 9) = "26 Day EMA"
Sheets(wsName).Cells(m + 14, 9).Formula = "=AVERAGE(E3:E28)"
Sheets(wsName).Range(Cells(m + 15, 9), Cells(maxRow, 9)).Formula = "=E29*(2/(26+1)) + I28*(1-(2/(26+1)))"
i = i+ 1
next i
Nun erhalte ich beim Durchlauf jedes Mal einen Debug-Fehler (Run-Time Error 1004), sobald folgende Zeilen (auf dem zweiten Ziel-Tabellenblatt) durchlaufen werden:
Sheets(wsName).Range(Cells(m + 1, 8), Cells(maxRow, 8)).Formula = "=E15*(2/(12+1))+H14*(1-(2/(12+1)))"
Sheets(wsName).Range(Cells(m + 15, 9), Cells(maxRow, 9)).Formula = "=E29*(2/(26+1)) + I28*(1-(2/(26+1)))"
Diese Formeln werden ohne Probleme im ersten Blatt eingefügt, ab dem zweiten wie bereits geschrieben kommt die Fehlermeldung.
Was mache ich falsch bzw. wo muss ich ansetzten, dass der obige Code durch alle Tabellenblätter, welche im Blatt Parameter stehen ohne Fehler durchlaufen wird?
Besten Dank für Eure Hilfe schon mal im Voraus.
Schönen Samstag Abend und Grüsse
Dan

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten und Formeln in mehrere Tabellenblätter
09.04.2016 19:52:24
Werner
Hallo Dan,
ich würde mal vermuten ein Referenzierungsproblem
With Sheets(wsName)
.Cells(2, 8) = "12 Day EMA"
.Cells(m, 8).Formula = "=AVERAGE(E3:E14)"
.Range(.Cells(m + 1, 8), .Cells(maxRow, 8)).Formula = "=E15*(2/(12+1))+H14*(1-(2/(12+1)))"
End With
Gruß Werner

AW: Daten und Formeln in mehrere Tabellenblätter
09.04.2016 20:10:00
Dan
Hallo Werner,
vielen Dank für Deine schnelle Antwort.
Ich habe den Block, wie von Dir vorgeschlagen, angepasst.
Leider erhalte ich weiterhin den selben Fehler...
Kann es daran liegen, dass ich versuche über die Variable auf eine dynamische Liste zugreifen möchte?
Besten Dank für Deine Bemühungen.
Grüsse
Dan

Anzeige
AW: Daten und Formeln in mehrere Tabellenblätter
09.04.2016 20:37:25
Dan
Hallo Werner
entschuldige bitte den letzten Eintrag.
Ich habe die Punkte (.) vor "Cells..." übersehen. Nachdem ich diese in den Code mitaufgenommen habe funtkioniert es! Besten Dank schon mal soweit.
Nun eine zweite Frage: Warum sind diese Punkte bei dem Range(Cells, Cells) wichtig? Wenn der Code ausschliesslich ein Blatt durchläuft, dann scheint dieses Referizierungsproblem nicht aufzutreten.... Um es zu verstehen fehlt mir noch die VBA Erfahrung. Könntest Du hier eine Antwort geben?
Besten Dank im voraus!
Grüsse
Dan

AW: Daten und Formeln in mehrere Tabellenblätter
09.04.2016 22:10:18
Werner
Hallo Dan,
wenn du eine Range auf einem anderen Blatt ansprechen willst, dann muss das Worksheet sowohl vor der Range als auch vor beiden Cells angegeben werden, sonst ist nicht korrekt referenziert. Da das etwas umständlich ist, kannst du das ganze in ein With End With packen. Dann muss aber vor das Range und vor beide Cells ein Punkt. Dadurch wird dann auf das Blatt, das im With angegeben ist referenziert.
Du hast ja jetzt selbst gesehen wie wichtig so ein Punkt sein kann.
Gruß Werner
Anzeige

344 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige