wsDb.Range(Cells(2, 1), Cells(153, 20)) = matrixDb
Einfach nur Cells bezieht sich auf das aktuell sichtbare Blatt, insofern der Quellcode in einem Modul steht. Steht er in einem Blatt, dann bezieht es sich genau auf dieses eine.
Du verursachst hier also im Worst-Case-Fall einen Laufzeitfehler, da du mitunter eine Zelle (z.B. Cells(2,1)) heranziehst und in einem anderen Blatt, welches nicht das aktive ist (wsDb), versuchst zu referenzieren ... das geht natürlich nicht. Anders gesagt: Du versuchst dann augenscheinlich einen Bereich über Arbeitsblätter hinweg zu referenzieren und das ist nunmal nicht erlaubt / definiert. ;)
Also:
wsDb.Range(wsDb.Cells(2, 1), wsDb.Cells(153, 20)) = matrixDb
''oder:
'With wsDb
' .Range(.Cells(2, 1), .Cells(153, 20)) = matrixDb
'End With
PS: Geht demnach also auch um das Thema "sauberer Programmierstil" - man schreibt auf was gemeint ist und nicht weniger. ;o)
Gruß
|