PDA

Vollständige Version anzeigen : variables Rangeobjekt


Bert44
12.07.2006, 13:08
Hallo VBA-Experten

Ich habe zwei Workbooks ("Test1" u. "Test2") .Vom Blatt "Ost"(Test1) sollen die Werte eines Bereiches in Blatt "West"(Test2) übertragen (nicht mit copy) werden.

sub Übertrag()

WB1= "Test1".xls
WB2= "Test2".xls
Sh1 = "Ost"
Sh2="West"


Workbooks(WB2).Sheets(Sh2).Range("A1:A3").value= Workbooks(WB1).Sheets(Sh1).Range("A1:A3")
end sub

Funktioniert, jedoch führt

Workbooks(WB2).Sheets(Sh2).Range(Cells(1,sp),Cells(5;sp)).value= Workbooks(WB1).Sheets(Sh1).Range(Cells(1,sp),Cells(5;sp)).value


zu Fehler 1004 Anwendungs/Objektfehler

Die Bereiche müssen variable sein. Deshalb Versuch mit Range und Cells.

Wo liegt mein Fehler? Für jeden Tipp bin ich dankbar.

MichaelMichael
12.07.2006, 14:04
Hallo Bert,

Dein Code enthält im Range ein ;

Dies müßte gehen (NICHT GETESTET - AUS FUNKTIONIERENDEM CODE UMGESETZT)

Range(Cells(1,sp),Cells(5,sp)).Select 'markieren
Selection.Copy 'kopieren
Workbooks(WB2).Activate 'anknipsen
Sheets(Sh2).Select 'dieses Arbeitsblatt
Range(Cells(1,sp),Cells(5;sp)).Select 'positionieren
Selection.Paste 'schreiben

MfG M.

Hajo_Zi
12.07.2006, 14:19
Hallo MIchael,

auf select kann in VBA zu 99% verzichtet werden.
sollen die Werte eines Bereiches in Blatt "West"(Test2) übertragen (nicht mit copy) werden.


Sub Übertrag()
WB1 = "Test1.xls"
WB2 = "Test2.xls"
Sh1 = "Ost"
Sh2 = "West"
Workbooks(WB2).Sheets(Sh2).Range(Cells(1, sp), Cells(5, sp)).Value = _
Workbooks(WB1).Sheets(Sh1).Range(Cells(1, sp), Cells(5, sp)).Value
End Sub

ungetestet

<img src="http://home.media-n.de/ziplies/images/grusz1.gif" align="middle" height="30" alt="Grußformel"><a href="http://home.media-n.de/ziplies/" target="_blank"><img border="0" src="http://home.media-n.de/ziplies/images/logo_hajo.gif" align="middle" height="30" alt="Homepage"></a>

Bert44
12.07.2006, 14:19
danke MichaelMichael,

das " ;" ist ein Schreibfehler im Originalcode (,) natürlich nicht vorhanden.
Ich wollte copy jedoch ausdrücklich umgehen um kein Format und Formel mitzubekommen. Der Code wird mit Parametern von anderen Prozeduren aufgerufen. Deshalb variable Gestaltung. Die Dateien Test1 und Test2 sind geladen jedoch nicht aktiv. Der Code steht in einer dritten Datei ("Steuerung"), die aktiv ist.

R J
12.07.2006, 14:20
Hi Bert,

Du hast sp (jedenfalls hier im Bsp.) weder dimensioniert, noch hat sp einen Wert zugewiesen bekommen. Somit ist sp entweder = "" oder 0. Diese Spalte ist natürlich nicht ansteuerbar.

Ciao, Ralf

Trantüte
12.07.2006, 14:24
hi bert

hier mal ein code der bei mir zumindest funktioniert:


Sub Uebertragung()

Dim TEST1 As Worksheet
Dim TEST2 As Worksheet
Dim intSpalte As Integer

intSpalte = 5

Set TEST1 = ThisWorkbook.Worksheets("Tabelle1")
Set TEST2 = Workbooks("Test2.xls").Worksheets("Tabelle2")

TEST2.Range(TEST2.Cells(1, intSpalte), TEST2.Cells(11, intSpalte + 3)).Value = _
TEST1.Range(TEST1.Cells(1, intSpalte), TEST1.Cells(11, intSpalte + 3)).Value

End Sub


der code befindet sich bei mir in Test1 in einem ganz normalen modul. beide mappen müssen offen sein damit der code funktioniert.

die variablen und bereiche mußt du hald so anpassen wie dus brauchst.

mfg david

ps: es klappte mit deinem code nicht weil bei 2 verschieden mappen die nur cells anweisung nicht weis welche arbeitsmappe also nimmt sie immer die aktive. also muss man davor noch sagen welche arbeitsmappe. :)

Bert44
12.07.2006, 14:31
danke Hajo /Ralf

ich habe noch einmal Deinen Code getestet- voher sp =1 eingefügt (danke Ralf). Jetzt kommt Fehler 9 - Index außerhalb gültigen Bereich. Bei Cursorprobe werden die Variablen richtig angezeigt. Dateien Test1 und Test2 sind geladen.

Bert44
12.07.2006, 14:42
danke David

ich dachte bisher die aktive Mappe wird bei Cells nur dann genommen, wenn mit .Cells
codiert wird.
Aber ich kann die zwei geladenen jedoch nicht aktiven Mappen ansprechen, wenn ich mit Range ohne Methode Cells arbeite. Man braucht also die Mappen nicht aktivieren.

Trantüte
12.07.2006, 15:34
oder so wie ichs oben im code gemacht habe indem du vor cells das workbook und worksheets setzt.

mfg david