Herbers Excel-Forum - das Archiv

Kopieren von Werten

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Kopieren von Werten
von: Andreas

Geschrieben am: 13.12.2006 15:36:13
Hallo,
ich brauch mal wieder eure Hilfe. Ich habe eine Basisdatei und eine Zieldatei und nun möchte ich mir einige Daten von der Basis- in die Zieldatei. In der Basisdatei stehen im Bereich A6 bis A20 Jahreszahlen. Jedes Jahr kommt eine Zeile dazu, was im unten angeführten Beispiel durch die IF-Anweisungen beachtet wurde. Durch eine Auswahl in der Userform wird das Jahr festgelegt, dessen Werte ich benötige. Wenn ich also die Werte von 2005 brauch, soll mir das Programm in der Basisdatei (Tabellenblatt 1.1) in Spalte A (Zellen A6:A20) nach diesem Jahr suchen und dann die Werte aus Spalte B bis W der gleichen Zeile in die Zieldatei kopieren.
In der Zieldatei (Tabellenblatt „TAB 11“) müssen die Werte untereinander von B6 bis B26 stehen.
Kann mir dabei bitte jemand helfen. Folgende Überlegung hab ich bereits versucht, aber so funktioniert es nicht.
Sub Datenkopieren()
Dim wbBasis As Workbook, wbZiel As Workbook
Dim rngBasis As Range, rngZiel As Range, Zelle As Range
Dim c As Integer
Dim b As Integer
Set wbBasis = Workbooks("Basisdatei.xls")
Set wbZiel = Workbooks("Zieldatei.xls")
c = UserForm1.ComboBoxJahre.ListIndex
'Datenbereich in Basis
'über if-Abfrage Range-Zuweisung, um Bereich variabel zu halten
If c = 0 Or c = 1 Then
b = 2005
Set rngBasis = wbBasis.Worksheets("1.1").Range("A6:W20")
ElseIf c = 2 Then
b = 2006
Set rngBasis = wbBasis.Worksheets("1.1").Range("A6:W21")
ElseIf c = 3 Then
b = 2007
Set rngBasis = wbBasis.Worksheets("1.1").Range("A6:W22")
ElseIf c = 4 Then
b = 2008
Set rngBasis = wbBasis.Worksheets("1.1").Range("A6:W23")
ElseIf c = 5 Then
b = 2009
Set rngBasis = wbBasis.Worksheets("1.1").Range("A6:W24")
ElseIf c = 6 Then
b = 2010
Set rngBasis = wbBasis.Worksheets("1.1").Range("A6:W25")
ElseIf c = 7 Then
b = 2011
Set rngBasis = wbBasis.Worksheets("1.1").Range("A6:W26")
ElseIf c = 8 Then
b = 2012
Set rngBasis = wbBasis.Worksheets("1.1").Range("A6:W27")
ElseIf c = 9 Then
b = 2013
Set rngBasis = wbBasis.Worksheets("1.1").Range("A6:W28")
ElseIf c = 10 Then
b = 2014
Set rngBasis = wbBasis.Worksheets("1.1").Range("A6:W29")
ElseIf c = 11 Then
b = 2015
Set rngBasis = wbBasis.Worksheets("1.1").Range("A6:W30")
End If
'Daten im Bereich für Ergebnisse löschen
wbZiel.Worksheets("TAB 11").Range("B6:B26").ClearContents
'Werte in dem Ergebnisbereich eintragen mit Tabellenfunktion VLookup (SVERWEIS)
For Each Zelle In rngZiel
Zelle.Offset(2, 0).Value = Application.WorksheetFunction.VLookup(Zelle.Value, rngBasis, 1, False)
Next
End Sub

Gruss
Andreas
Bild

Betrifft: AW: Kopieren von Werten
von: Mac4

Geschrieben am: 13.12.2006 16:30:25
Hallo Andreas,
das hört sich ja ziemlich kompliziert an - vielleicht geht es ja einfacher.
Ich gehe mal davon aus, das die Combobox die Jahreszahlen zur Verfügung stellt - dann sollte auch Folgendes gehen (nicht getestet):
Sub test()
Dim Treffer, wbBasis, wbZiel
Set wbBasis = Workbooks("Basisdatei.xls")
Set wbZiel = Workbooks("Zieldatei.xls")
Set Treffer = [A:A].Find(UserForm1.ComboBoxJahre)
With Worksheets("1.1")
.Range(.Cells(Treffer.Row, "B"), .Cells(Treffer.Row, "W")).Copy
End With
wbZiel.Select
ActiveWorkbook.Sheets("Tab11").Select
ActiveWorkbook.ActiveSheet.[B6].PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub

Marc
 Bild
Excel-Beispiele zum Thema "Kopieren von Werten"
Blätter in andere Arbeitsmappen kopieren Module von Mappe zu Mappe kopieren
Arbeitsblatt 40 mal kopieren Schriftgröße beim Kopieren verdoppeln
Beim Kopieren auch die Zeilenhöhe und Spaltenbreite übernehmen Tabellencode nach Kopieren des Blattes löschen
Arbeitsmappe blitzschnell kopieren VBE-Namen der Blattmodule beim Kopieren festlegen
Blattinhalt von einer zur anderen Arbeitsmappe kopieren Formel bis zur letzten Zeile der Nebenspalte kopieren