.PasteSpecial xlPasteValues +Tabellenblattwechsel

Bild

Betrifft: .PasteSpecial xlPasteValues +Tabellenblattwechsel
von: Maria
Geschrieben am: 17.04.2015 11:33:10

Liebe Community,
ich habe ein Verständnisproblem und hoffe auf eure Unterstützung, weil ich in der Recherche im Netz nichts dazu gefunden habe...
Ich verwende in meinem Code mehrfach folgende Funktion für unterschiedliche Bereiche / Formeln (also nicht immer index, sondern auch vlookup etc.):

With wsData.Range(ColumnToLetter(ColNr) & FirstRow & ":" & ColumnToLetter(ColNr) & x) 
.FormulaR1C1 = "=index('[" & wbA & "]" & Workbooks(wbA).Sheets(1).Name & "'!c" & ColwbANr & ",  _
RC" & ColTreffer & ",0)"
.Copy
.PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False

Alle Namen sind global benannt und der Code funktioniert soweit einwandfrei!
Einziges Manko: Manchmal wechselt er in dem Code, den ich aus Tabellenblatt wsMenu starte, auf das Tabellenblatt wsData und zwar genau in der Zeile .pasteSpecial xlPasteValues (getestet über Schritt für Schritt Codedurchlauf mit F8).
Und es passiert wenn ich Schritt für Schritt durchgehe eben nicht immer...
Gibt es hierfür irgendeine Erklärung?
Bei meiner vorherigen Version mit .value = .value, habe ich übrigens das Problem nicht feststellen können, der Code hat aber deutlich länger benötigt (es sind auch viele Zeilen!).
Natürlich kann ich das Problem lösen, indem ich am Ende des Codes ein wsMenu.Activate einbaue, aber ich habe irgendwo mal gelesen, das Acitvate und Select in 99% der Fälle überflüssig ist und verwende es daher sonst nie...
... und ich würde gerne einfach verstehen, warum er in der Zeile das Tabellenblatt wechselt!
Vielen Dank für jeglichen Hinweis und Tipp!
Schöne Grüße
Maria

Bild

Betrifft: AW: .PasteSpecial xlPasteValues +Tabellenblattwechsel
von: Nepumuk
Geschrieben am: 17.04.2015 11:49:03
Hallo,
der Wechsel des Tabellenblattes bei der PasteSpecial-Methode ist normal. Nicht normal ist es, dass Excel nicht automatisch auf die Ausgangstabelle zurück wechselt. Da hilft nur eine Krücke, indem du den Wechsel hart programmierst.

Dim wksActiveSheet As Worksheet
Set wksActiveSheet = ActiveSheet
With wsData.Range(ColumnToLetter(ColNr) & FirstRow & ":" & ColumnToLetter(ColNr) & x)
    .FormulaR1C1 = "=index('[" & wbA & "]" & Workbooks(wbA).Sheets(1).Name & _
        "'!c" & ColwbANr & ", RC" & ColTreffer & ",0)"
    .Copy
    .PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
wksActiveSheet.Activate
Set wksActiveSheet = Nothing

Gruß
Nepumuk

Bild

Betrifft: AW: .PasteSpecial xlPasteValues +Tabellenblattwechsel
von: Maria
Geschrieben am: 17.04.2015 12:02:08
Aber woher kommt der Fehler, dass Excel nicht automatisch zurückwechselt?
Würde ich bei dem automatischen Zurückwechseln das im Schritt-für-Schritt Modus überhaupt sehen?
Die Krücke habe ich verstanden und ja auch vorgeschlagen, aber warum funktioniert es manchmal und manchmal nicht?

Bild

Betrifft: AW: .PasteSpecial xlPasteValues +Tabellenblattwechsel
von: Nepumuk
Geschrieben am: 17.04.2015 12:21:11
Hallo,
gibt es in der Tabelle in welche du einfügst irgendwelche Event-Prozeduren die z.B. auf Änderungen in der Tabelle reagieren? Also so etwas wie Worksheet_Change, Worksheet_SelectionChange, Worksheet_Activate oder Worksheet_Deactivate. Wenn nicht, dann musst du es es unter der Rubrik "It's Magic" ablegen.
Gruß
Nepumuk

Bild

Betrifft: AW: .PasteSpecial xlPasteValues +Tabellenblattwechsel
von: Maria
Geschrieben am: 17.04.2015 13:09:29
Then it's magic...

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Berechnung lineare Funktion"