Ich weiss nicht recht …
Moin Thomas,
ich weiss nicht recht, was Du genau machst. Aber allgemein gilt
doch, dass Du auf jedes beliebige Arbeitsblatt zugreifen kannst, wenn Du es korrekt adressierst.
Ich gehe davon aus, dass Du nicht VB, sondern VBA meinst, also innerhalb von Excel mit dem Makro-Editor arbeitest. In sofern wäre die Frage übrigens im Excel-Brett viel besser aufgehoben. Da ist viel mit VBA.
In Makros also schreibt man ja häufig Dinge wie
Range("A10").Value = X
oder dergleichen, und es funktioniert auch wunderbar. Was man dabei allerdings leicht vergisst ist, dass einem der VBA-Interpreter eine gewisse Faulheit gestattet. Eigentlich müssten wir nämlich korrekt und vollständig schreiben:
**Application.ActiveWorkbook.ActiveSheet.** Range("A10").Value = X
oder auch
**Application.ActiveWorkbook.Sheets("Name oder Nummer").**Range("A10").Value = X
Daraus solltest Du nun direkt ablesen können, worin die Lösung besteht: Du musst das Tabellenblatt direkt ansprechen. Das „Application.ActiveWorkbook.“ kannst Du dabei weglassen, sofern Du Dich im gleichen Workbook bewegst. Sollte es hingegen eine andere offene Datei betreffen, musst Du die natürlich angeben, indem Du auch das entsprechende Workbook benennst („Application.Workbooks(i).“).
Ich bin übrigens davon abgegangen, Code in die einzelnen Tabellenblätter zu schreiben, wenn es passieren kann, dass ich ihn über mehrere Arbeitsblätter hinweg benötige. Für meinen Urlaubsplaner z.B. (s.u. im Brett) habe ich den Code in einem Modul hinterlegt und rufe ihn nur noch mit einer Zeile aus den Blättern heraus auf. Dabei übergebe ich den Namen (oder den Index) des jeweiligen Blattes und kann es somit vom Modul aus wie oben beschrieben genau adressieren.
Ich hoffe, das hilft Dir weiter.
Kristian
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]