Microsoft Excel

Herbers Excel/VBA-Archiv

Wertebereich suchen und kopieren

Betrifft: Wertebereich suchen und kopieren von: stormlamp
Geschrieben am: 29.09.2014 15:25:04

Hallo Zusammen,

In Tabellen1 ziehe ich aus anderen Tabellen über Formeln Werte zusammen. Dabei sind in Tabelle1 soviele Zeilen mit Formeln gefüllt, wie maximal zusammenkommen können.

Nun möchte ich per Makro den Bereich, der tatsächlich Werte enthält ans Ende von Tabelle2 übertragen. In Spalte E enthält die erste nicht gefüllte Zelle ein #NV, das ich Suche.

Dann kommt der Teil, der mir Probleme macht. Ich muss einen Bereich markieren, ausgehend von der gefundenen #NV-Zelle eine Zeile hoch und 6 Spalten nach rechts, von dort aus zurück bis A2.

Diesen markierten Bereich kopiere ich dann in die erste leere Zelle in Spalte A der Tabelle 2 und springe zurück in Tabelle1.

Hier das Script in dem mir nur noch die Bereichsdefinition fehlt.

Wie muss ich diese Definition richtig schreiben?

Sub Bereichkopieren()

Range("E2").Select
    Cells.Find(What:="#NV", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
        
>>    Zelladresse1 = Range( "aktuell gefundene Zelle - 1 Zeile nach oben + 6 Spalten nach  _
rechts").Select
>>    Range("A2:Zelladresse1").Select


    Selection.Copy
    Sheets("Tabelle2").Select
    Range("A1").Select
    Cells.Find(What:="", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
    ActiveSheet.Paste
    Sheets("Tabelle1").Select
    Range("B2").Select
    Application.CutCopyMode = False
End Sub
Gruß
Hans

  

Betrifft: AW: Wertebereich suchen und kopieren von: Rudi Maintaire
Geschrieben am: 29.09.2014 15:48:05

Hallo,
Range(Cells(2, 1), ActiveCell.Offset(-1, 6)).Copy

Gruß
Rudi


  

Betrifft: AW: Wertebereich suchen und kopieren von: stormlamp
Geschrieben am: 29.09.2014 16:01:23

Hallo Rudi,

danke für die Information.

Leider läuft der andere Teil des Makros nicht.
Ich habe das Makro aufgezeichnet, aber wenn ich es ablaufen lassen will, funktioniert es nicht und bleibt mit Fehler 91 hängen.

Bisher war ich davon ausgegangen, dass Makroaufzeichnungen ohne Nachbearbeitung auch lauffähig sind. Ganz offensichtlich ein Trugschluss. Jeweils die aufgezeichneten Teile "Cells.Find..." wollen nicht.

Was muss ich an diesem Script noch ändern, damit es fehlerfrei läuft?

Sub Bereichkopieren()

Range("E:E").Select

    Cells.Find(What:="#NV", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
        
    Range(Cells(2, 1), ActiveCell.Offset(-1, 6)).Copy

    Sheets("Tabelle2").Select
    Range("A1").Select

    Cells.Find(What:="", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate

    ActiveSheet.Paste
    Sheets("Tabelle1").Select
    Range("B2").Select
    Application.CutCopyMode = False
End Sub
Gruß
Hans


  

Betrifft: AW: Wertebereich suchen und kopieren von: Rudi Maintaire
Geschrieben am: 29.09.2014 16:39:58

Hallo,

    Range("E2").Select
    Cells.Find(What:="n/a", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
    Range(Cells(2, 1), ActiveCell.Offset(-1, 6)).Copy

wobei Select/ Activate eigentlich überflüssig/ störend ist.


  

Betrifft: Gelöst von: stormlamp
Geschrieben am: 29.09.2014 20:22:14

Danke für die Hilfe, nun klappt es.

Die neue Information mitten im Thead hatte ich zuerst übersehen.

Gruß
Hans


  

Betrifft: AW: Wertebereich suchen und kopieren von: stormlamp
Geschrieben am: 29.09.2014 16:35:01

Hallo,

ich habe jetzt den Laufzeitfehler 91 weg, dafür funktioniert jedoch die vorgeschlagene Selektion nicht mehr. Wo mache ich den Fehler?

Sub Werte_kopieren()
'
' Makro2 Werte_kopieren

'
    Range("E:E").Select
    
    mystring1 = "#NV"
    Set RangeObj = Cells.Find(What:=mystring1, After:=ActiveCell, _
    LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
    SearchDirection:=xlNext, MatchCase:=False)
    
    Range(Cells(2, 1), ActiveCell.Offset(-1, 6)).Copy
    
    Selection.Copy
    
    Sheets("Tabelle2").Select
    Range("A1").Select
    
    mystring2 = ""
    Set RangeObj = Cells.Find(What:=mystring2, After:=ActiveCell, _
    LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, _
    SearchDirection:=xlNext, MatchCase:=False)
        
    ActiveSheet.Paste
    Sheets("Tabelle1").Select
    Range("B2").Select
    Application.CutCopyMode = False
End Sub
Gruß
Hans


  

Betrifft: lösche Selection.Copy owT von: Rudi Maintaire
Geschrieben am: 29.09.2014 16:41:09




  

Betrifft: AW: lösche Selection.Copy owT von: stormlamp
Geschrieben am: 29.09.2014 18:03:22

Hallo,

das war es leider nicht. Das Makro bleibt genau bei:

Range(Cells(2, 1), ActiveCell.Offset(-1, 6)).Copy

mit Laufzeitfehler 1004 stehen.

Gruß
Hans


 

Beiträge aus den Excel-Beispielen zum Thema "Wertebereich suchen und kopieren"