Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1264to1268
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

Indirekt; Makro & Namen definieren

Indirekt; Makro & Namen definieren
JAck
Hallo liebe Gemeinde
Ich hab es zwar schon in einem Subpost von mir mit erwähnt, aber denke es ist ein eigenständiges Thema wert.
Folgendes passiert.
Ich habe Mappe1 und Mappe2
in Mappe 1 wird über Namen definieren die Blattnamen in einer Liste "eingetragen" - funktioniert klaglos
in Mappe 1 wird desweiteren etwas mit diesen Strings "gespielt"
in Mappe 2 wird aus einem der "Spielergebnisse" der Mappe1 eine Liste aus 6 Werten mittels INDIREKT gezogen diese werden in 6 Zellen der Mappe 2 eingetragen
dann Starte ich ein Makro in Mappe 2 (Button ist auf einem Worksheet eingebunden) so kann ich sicher sein dass die aktive Mappe die 2. Mappe ist (Es müssen wegen indirekt ja beide offen sein)
DAs Makro nimmt nun die 6 Werte aus der Mappe 2 und schreibt sie in ein anderes tabellenblatt..
Soweit so einfach
NUR
es Dauert etwa 60 Sekunden ..(bei 6 Werten?)
und
in der Mappe 1 wird die Liste der Blattnamen verändert und die Blattnamen der Mappe 2 eingetragen .. (Hä?)
und nun kommt es,
sobald ich eine Aktion in der Mappe 2 mache, wie zb. einen Buchstaben eingeben, "korrigiert" er die Daten in Mappe 1
so als würde es einen Verweis "fälschlich zerstören"
Was kann ich also Tun? bzw. was mache ich falsch?
Thanks in advance
nun
AW: Indirekt; Makro & Namen definieren
23.05.2012 18:51:20
Reinhard
Hallo Jack,
auf einmal sind es 60 sec? Schwächelt der Akku deines laptops? :-)
Du hast in deinem Makro in Codezeile 6 den üblichen Fehler eingebaut.
Lösche sie einfach, dann näherst du dich vielleicht einer bestimmten Erkenntnis *grien*
Gruß
Reinhard
AW: Indirekt; Makro & Namen definieren
24.05.2012 09:42:08
Jack
Moin Moin
Da sind wieder Spaßvögel am Werk =)
Und wegen der 30 / 60 Sekunden .. ich hab nicht gestoppt aber es ist eine gefühlte Ewigkeit.
Hier mal der Code
Sub blattnamen()
Dim i As Integer, x, y1, y2, y3, y4, y5, y6, z  As String
'On Error Resume Next
With ActiveWorkbook
With Worksheets("How-To")
y1 = .Cells(18, 8).Value
y2 = .Cells(19, 8).Value
y3 = .Cells(20, 8).Value
y4 = .Cells(21, 8).Value
y5 = .Cells(22, 8).Value
y6 = .Cells(23, 8).Value
End With
With Worksheets("Auswertung(alle)")
If y1 = "" Then GoTo Ende
.Cells(34, 5).Value = y1
If y2 = "" Then GoTo Ende
.Cells(34, 6).Value = y2
If y3 = "" Then GoTo Ende
.Cells(34, 7).Value = y3
If y4 = "" Then GoTo Ende
.Cells(34, 8).Value = y4
If y5 = "" Then GoTo Ende
.Cells(34, 9).Value = y5
If y6 = "" Then GoTo Ende
.Cells(34, 10).Value = y6
End With
End With
Ende:
End Sub
Das einzige was ich mir "erklären" könnte, wäre das er mit activeWorkbook durcheinander kommt bei den indirekt Formel. Wobei das eigentlich ja auch nicht sein kann..
Vielen Dank
Anzeige
AW: Indirekt; Makro & Namen definieren
24.05.2012 10:23:41
Beverly
Hi Jack,
aus welcher Arbeitsmappe soll in welche übernommen werden, bzw. welches Tabellenblatt befindet sich in welcher Arbeitsmappe? Wenn du dich korrekt beziehen willst, dann musst du auch in dem Codeteil Worksheets(...) einen "." vor Worksheets setzen - andernfalls wird sich immer auf die gerade aktive Arbeitsmappe bezogen. Die Arbeitsmappe mit dem Code kann man dann über ThisWorkbook ansprechen. Das alles sollte man bei VBA Gut eigentlich wissen... ;-)
Ich nehme mal an, es soll aus Tabelle "How-To" nach "Auswertung(alle)" übernommen werden und der Code befindet sich in der Arbeitsmappe mit dem Tabellenblatt "Auswertung(alle)"?
Sub blattnamen()
Dim i As Integer
Dim lngZeile As Long
Dim wksQuelle As Worksheet
Dim wksZiel As Worksheet
Set wksQuelle = ActiveWorkbook.Worksheets("How-To")
Set wksZiel = ThisWorkbook.Worksheets("Auswertung(alle)")
i = 5
With wksQuelle
For lngZeile = 18 To 23
If .Cells(lngZeile, 8)  "" Then wksZiel.Cells(34, i) = .Cells(lngZeile, 8)
i = i + 1
Next lngZeile
End With
Set wksQuelle = Nothing
Set wksZiel = Nothing
End Sub



Anzeige
AW: Indirekt; Makro & Namen definieren
24.05.2012 10:29:13
Jack
Hallo Karin
Zum Thema VBA gut. Ich find das ich gut bin, da ich schonmal 100% mehr als meine Kollegen kann =)
Meinem Berufsbild entsprechend wär ich sogar sehr gut. Und ich kann Grundsätzlich viele meiner Probleme lösen, wenn ich auch weder sauber programmiere, noch den besten Weg dazu wähle.
In relation zu euch bin ich wahrscheinlich aber eher Anfänger =)
Aber das ist auch egal =)
Ich hab mal 2 exemplarische Mappen mit dem Problem hochgeladen und probiere jetzt erstmal deinen Code aus =)
Vielen Dank dafür
AW: Indirekt; Makro & Namen definieren
24.05.2012 10:36:06
Jack
Also dein Makro macht genau den gleichen "Fehler"
Was meine Vermutung bestätigt das das Makro dabei eher eine sekundäre Rolle spielt.
Und um die Frage zu beantworten, das Makro arbeitet nur in einer Mappe (der Mappe2)
Ich glaube das Excel bzw. meine Idee das Problem damit hat, Daten aus einer Indirekt Zelle zu verwerten, da es (ja Formeln in dem Moment in dem ein zugriff erfolgt immer neu berechnet) ich versuch das mal herauszufinden. Womöglich lässt sich das Problem ja beheben indem man eine berechnung von verweisen und formeln erst auf Befehl machen lässt.
Hab mal gelesen das das irgendwie geht.
-.-
Danke dennoch
Anzeige
AW: Indirekt; Makro & Namen definieren
24.05.2012 11:34:31
Beverly
Hi Jack,
da ich annahm, dass von einer Mappe in die andere kopiert werden soll, war der Code natürlich auch entsprechend ausgelegt. Ändere den Code wie folgt:
Sub blattnamenNeu()
Dim i As Integer
Dim lngZeile As Long
i = 5
With ActiveSheet
For lngZeile = 18 To 23
If .Cells(lngZeile, 8)  "" Then Worksheets("Auswertung(alle)").Cells(34, i) = .Cells( _
lngZeile, 8)
i = i + 1
Next lngZeile
End With
End Sub



AW: Indirekt; Makro & Namen definieren
24.05.2012 11:59:37
Jack
Hallo Karin
vielen Dank für deinen erneuten Versuch
Jedoch lässt sich auf diesem Wege der fehler auch nicht umgehen.
hast du dir zufällig meine 2 hochgeladenen Dateien mal angeschaut?
Ich hab jetzt grad eben noch zumindest eine Möglichkeit gefunden, wie ich excel "ausbremsen" kann
wenn ich vor meinen Code dieses einfüge berechnet er in Mappe 1 auf jeden Fall nicht mehr neu und lässt die Ergebnisse richtig "beim alten"
Set wrk = Workbooks(wksQuelle.Cells(6, 2).Value)
For Each sh In wrk.Worksheets
sh.EnableCalculation = False
Next
Wenn ich allerdings ans ende des "Schreibcodes" die funktion wieder aktiviere, macht er den gleichen Fehler wieder.
Ich bin kurz vorm Verzweifeln.
aber nur kurz =)
Anzeige
AW: Indirekt; Makro & Namen definieren
24.05.2012 12:23:37
Beverly
Hi Jack,
ich habe mir deine hochgeladenen Arbeitsmappen angeschaut, in B6 den Namen der Arbeitsmappe 80274.xlsm eingetragen und dann meinen Code ausgeführt. Damit werden dann im Tabellenblatt Auswertung(alle) in die Zellen E34 bis H34 die in Spalte H ab Zeile 18 (Tabellenblatt How-To) per Formel aus der Arbeitsmappe 80274.xlsm aufgelisteten Namen ausgegeben. Also um ehrlich zu sein, verstehe ich jetzt nicht, wo das Problem liegt.


AW: Indirekt; Makro & Namen definieren
24.05.2012 12:30:06
Jack
Genau
und nachdem du das ausgfeührt hast musst du in die Mappe 1 schauen ( also 80274) und dort sind im bereich B16. B48 die Tabellenblattnamen der Mappe 2 (also (80275) eingetragen statt der namen der Tabellenblätter der Mappe1
sobald du dann in Mappe 2 zb einen Buchstaben eingibst, oder Strg+z drückst ändert sich die daten wieder in Mappe 1 auf die richtigen bezeichnungen
Anzeige
AW: Indirekt; Makro & Namen definieren
24.05.2012 12:42:12
Beverly
Hi Jäck,
ändere den Code wie folgt:
Sub blattnamenNeu()
Dim i As Integer
Dim lngZeile As Long
Dim strTab As String
i = 5
Application.ScreenUpdating = False
With ActiveSheet
strTab = .Range("B6")
For lngZeile = 18 To 23
If .Cells(lngZeile, 8)  "" Then Worksheets("Auswertung(alle)").Cells(34, i) = .Cells( _
lngZeile, 8)
i = i + 1
Next lngZeile
End With
Workbooks(strTab).Worksheets("Zusammenfassung").Activate
Application.Calculate
ThisWorkbook.Worksheets("How-To").Activate
Application.ScreenUpdating = True
End Sub



Anzeige
AW: Indirekt; Makro & Namen definieren
24.05.2012 12:51:41
Jack
Perfekt
es Funktioniert. Vielen Dank dafür und deine Mühe und den Ehrgeiz das Problem zu lösen.
Nur, was ist da schief gelaufen?
Wo hatte excel das Problem deiner Meinung nach?
Grüße
INDIREKT() und Bezugsfehler nach Codeausführung
24.05.2012 13:58:36
Beverly
Hi Jack,
es ist offensichtlich eine Frage der Neuberechnung und die Ursache liegt irgendwo/irgendwie in der Verwendung der Funktion INDIREKT und darin, dass sich diese Funktion in der anderen Arbeitsmappe (und in einer anderen Excelinstanz ?) befindet. Aber mit Formeln kenne ich mich nicht so gut aus und möchte bzw. kann mich da nicht "aus dem Fenster lehnen". Ob dieses Phänomen auch in den anderen Excelversionen auftritt, entzieht sich ebenfalls meiner Kenntnis. Ich lasse die Frage noch offen, vielleicht können die Formelexperten ja Aufschluss darüber geben.


Anzeige
AW: INDIREKT() und Bezugsfehler nach Codeausführung
24.05.2012 14:06:42
Jack
Okay
Dennoch vielen Dank
AW: Indirekt; Makro & Namen definieren
24.05.2012 10:31:30
Reinhard
Hallo Jack,
am Code liegt es m.E. nicht.
Nimm trotzdem mal den nachfolgenden. Lade mal eine Beispielmappe hoch wo das auftritt was du beschreibst.
Sub blattnamen()
Dim N As Integer, wks2 As Worksheet
Set wks2 = ActiveWorkbook.Worksheets("Auswertung(alle)")
With ActiveWorkbook.Worksheets("How-To")
While N  ""
wks2.Cells(34 + N, 5).Value = .Cells(18 + N, 8).Value
Wend
End With
End Sub

Gruß
Reinhard
AW: Indirekt; Makro & Namen definieren
24.05.2012 10:37:53
Jack
Guten Morgen =)
Hab ich bereits gemacht Reinhard
(letzter Post)
konnte das Problem in einer exemplarischen Mappe reproduzieren
=)
Vielen Dank auch für deine Unterstützung
Anzeige
AW: Indirekt; Makro & Namen definieren
23.05.2012 18:52:59
Beverly
Hi Jack,
da niemand deinen Code kennt und auch deine Arbeitsmappen unbekannt sind, kann man nicht viel, bzw. gar nichts dazu sagen - man könne höchstens raten, dass vielleicht viel mit Select und Activate gearbeitet und dadurch die falsche Mappe aktiv ist beim Eintragen. Activate/Select verlangsamen außerdem bekanntlich die Codeabarbeitung.


Spielverderberin :-( *gg* o.w.T.
23.05.2012 18:54:05
Reinhard

AW: Indirekt; Makro & Namen definieren
24.05.2012 09:45:33
Jack
Hallo Beverly
Danke erstmal.
Aber eigentlich ist das makro nicht relevant, da das ja läuft.
Auch die Mappe funktioniert in sich.
Das Problem ist nur, wenn das Makro läuft machen die Zellen in der Mappe einen "Fehler"
hab nichtsdestotrotz den Post beim Vorreder mal gepostet.
Vielleicht gibt es ja einen Aufschluss
Anzeige
AW: Indirekt; Makro & Namen definieren
24.05.2012 10:19:48
Jack
So ich konnte "glücklicherweise" den Fehler reproduzieren.
Ich habe zwei Mappen (1 & 2) erstellt die Musterhaft das Problem wiedergeben
In Mappe 1 in B15 bis B48 werden die Blattnamen der folgenden Tabellenblätter "abgebildet" (mittels namen definieren [x] und der entsprechenden Formel in den Zellen)
in Mappe 2 im Bereich H17 werden Daten aus Mappe 1 B86: B92 aufgegriffen und mittels Makro weiterverarbeitet indem sie in Mappe2 in Auswertung8alle) E34:H34 geschrieben werden
wenn man nun auf den Button "Hier" in Mappe2(How-TO) klickt werden die Blattnamen der Mappe 2 in den Bereich Mappe1 B15:B48 geschrieben
Wichtig beide Datein runterladen beide in der gleichen Excelinstanz öffnen (wegen indirekt)
Bei Bedarf weitere Tabellenblätter in Mappe 2 hinzufügen um das ergebnis zu veranschaulichen
https://www.herber.de/bbs/user/80274.xlsm
https://www.herber.de/bbs/user/80275.xlsm
Viel Spaß =)
Ich bin mit meinem Latein am Ende
Bzw. fällt mir überhaupt kein Schlüssiger Lösungsansatz ein
Und vielen Dank bei der Unterstützung
Grüße

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige