2011-01-06 13 views
1

Ich habe ein Problem mit dem Lesen und Schreiben von Daten aus anderen Blättern.Lesen/Schreiben von Daten in anderen Blättern ohne vorherige Auswahl

Während ich unter Verwendung von Einzelzellen feinen lesen und schreiben kann:

Blätter (Blattname) .Cells (x, y) .value

verwendet:

Blätter (Blattname) .Range (Zellen (x, y), Zellen (a, b)) Wert

scheint nicht zu funktionieren.

Während dies leicht durch einfaches Auswählen des Blattes funktioniert, hat es ein wenig Overhead und fühlt sich ziemlich läppisch.

Der Hauptzweck, den ich dafür benötige, ist das Lesen und Schreiben von Arrays in inaktive Arbeitsblätter, wenn jemand eine Alternative hat, wäre ich aussergewöhnlich dankbar.

Prost

Antwort

1

die Zellen-Methode innerhalb eines Bereichs Objekt Verwendung zu einem anderen Arbeitsblatt verweisen müssen Sie das Arbeitsblatt aktivieren ersten denke ich (Abschnitt 5 in diesem von msdn sehen)

Sub ReferToCells() 
    Dim arrData() As Variant, i As Long 
    Sheets("Sheet2").Activate 
    arrData = Range(Cells(1, 1), Cells(2, 1)).Value 

    For i = 1 To UBound(arrData) 
     Debug.Print arrData(i, 1) 
    Next i 
End Sub 
+0

Dank Blatt Aktivierung sieht mir gut. Ich nehme an, das hat einen geringeren Aufwand als nur auswählen? – Cunning

+0

@ Cunning - Ich bin mir nicht sicher, ob Select oder Activate einen geringeren Overhead hat, aber ich würde mir vorstellen, dass der Unterschied so klein ist, dass es sich nicht lohnt, ihn zu optimieren. Da das msdn-Beispiel Activate verwendet, wäre ich geneigt, dabei zu bleiben ... –

3

Wenn Sie möchten vermeiden, mit Select oder Activate können Sie stattdessen nicht tun ?:

With Sheets("Sheet Name") 

    arrData = .Range(.Cells(1,1), .Cells(2,1)).Value 

End With 

So weit wie ich weiß, sollte das funktionieren.

1
Dim ws As Worksheet 

Set ws= Worksheets("MySheet") 

     With ws 
     .Range(ws.Cells(3, 1), ws.Cells(3, 14)).ClearContents 
     End With 

End If 

Das funktioniert sehr gut ohne

Verwandte Themen