Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

Benutzten Bereich kopieren und einfügen | Herbers Excel-Forum


Betrifft: Benutzten Bereich kopieren und einfügen von: Babs
Geschrieben am: 07.12.2009 09:36:41

Hallo zusammen,

ich bin noch neu hier und konnte leider auf das thema von Dieter
"Benutzten Bereich kopieren von Dieter vom 19.10.2009 17:43:03 " keinen Beitrag schreiben, geht irgendwie nicht !
wenn es doch möglich ist da was reinzuschreiben dann würd ich gerne wissen wie ?

Mein Problem bezieht sich auf diesen Code hier in dem Beitrag:

Set wks = ActiveSheet
With wks
Set Bereich = .Range(.Cells(5, 5), _
.Cells(.Cells.SpecialCells(xlCellTypeLastCell).row, _
.Cells.SpecialCells(xlCellTypeLastCell).Column))
MsgBox "Der benutzte Bereich liegt in: " & Bereich.Address
Bereich.Copy
End With

das kopieren klappt einwandfrei, aber leider nicht das einfügen

nun will ich das in einem neuen sheet einfügen, welches auch geöffnet ist,

Windows("Test").Activate
Sheets(1).Activate
Bereich.Paste

das kopierte wird leider irgendwo im sheet eingefügt,
ich würd gern wie oben, das selber bestimmen, wo das eingefügt werden soll
.Range(.Cells(5, 5).paste so in der art, nur klappt es wieder mal nicht :)

wäre schön wenn mir jemand helfen kann

  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Rudi Maintaire
Geschrieben am: 07.12.2009 09:42:46

Hallo,
Bereich.Copy Workbooks("Test.xls").Sheets(1).Cells(5,5)

Gruß
Rudi


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Beverly
Geschrieben am: 07.12.2009 09:43:46

Hi Babs,

versuche es mal so:

    Dim wks As Worksheet
    Dim Bereich As Range
    Set wks = ActiveSheet
    With wks
        Set Bereich = .Range(.Cells(5, 5), _
        .Cells(.Cells.SpecialCells(xlCellTypeLastCell).Row, _
             .Cells.SpecialCells(xlCellTypeLastCell).Column))
        MsgBox "Der benutzte Bereich liegt in: " & Bereich.Address
        Bereich.Copy Workbooks("Test.xls").Worksheets("Tabelle1").Cells(5, 5)
    End With
    Set wks = Nothing
    Set Bereich = Nothing


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Babs
Geschrieben am: 07.12.2009 09:53:56

oh vielen dank, das ging ja schnell :)


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Babs
Geschrieben am: 07.12.2009 10:55:09

hallo, ich würd gern noch was wissen

jetzt hab ich das so:

Sub kopierebereich()
  
 
    Dim wks As Worksheet
    Dim Bereich As Range
    Set wks = ActiveSheet
    
    
    With wks
        Set Bereich = .Range(.Cells(5, 5), _
        .Cells(.Cells.SpecialCells(xlCellTypeLastCell).row, _
             .Cells.SpecialCells(xlCellTypeLastCell).Column))
        MsgBox "Der benutzte Bereich liegt in: " & Bereich.Address
        Bereich.Copy Workbooks("Test.xls").Sheets(1).Cells(5, 1)
        Sheets(1).Activate
    End With
    Set wks = Nothing
    Set Bereich = Nothing
    
    '    With ActiveSheet
     '   Application.ScreenUpdating = False
     '   Tmp = Cells.Find("*", [A1], , , xlByRows, xlPrevious).row
     '   For x = Tmp To 1 Step -1
     '       Do While Application.CountA(Rows(x)) = False
     '           Rows(x).EntireRow.Delete
     '       Loop
     '   Next x
 'End With

End Sub
Die kommentierten Zeilen sollten eigentlich dafür sorgen dass nach dem kopiervorgang
die Leeren Zeilen gelöscht werden.
Leere Zeilen werden zwar gelöscht aber nur nicht auf Sheet1 in der testdatei


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Beverly
Geschrieben am: 07.12.2009 11:27:02

Hi Babs,

mit Sheets(1).Activate aktivierst du das Tabellenblatt in der Arbeitsmappe mit dem Code - du musst also vorher noch die Arbeitsmappe Test.xls aktivieren.

Wenn du nicht unbedingt in das Tabelleblatt der Arbeitsmappe Test wechseln willst, dann lasse die Zeile Sheets(1).Activate weg und schreibe anstelle von With ActiveSheet den Befehl: With Workbooks("Test.xls").Worksheets(1)


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Babs
Geschrieben am: 07.12.2009 12:01:09

hallo Beverly,

ich hab das jetzt so gemacht:

Sub kopierebereich()
  
    Dim wks As Worksheet
    Dim Bereich As Range
    Set wks = ActiveSheet
    Dim Zeile As Long
    Dim ZeileMax As Long
    

    With wks
        Set Bereich = .Range(.Cells(5, 5), _
        .Cells(.Cells.SpecialCells(xlCellTypeLastCell).row, _
             .Cells.SpecialCells(xlCellTypeLastCell).Column))
        MsgBox "Der benutzte Bereich liegt in: " & Bereich.Address
        Bereich.Copy Workbooks("Test.xls").Sheets(1).Cells(5, 1)
        Sheets(1).Activate
    End With
    Set wks = Nothing
    Set Bereich = Nothing
    
    
    Workbooks("Test.xls").Worksheets("Sheet1").Activate
    
    ZeileMax = ActiveSheet.UsedRange.Rows.Count
    
    For Zeile = ZeileMax To 1 Step -1
    If Application.WorksheetFunction.CountA(Rows(Zeile)) = 0 Then
    
    Rows(Zeile).Delete
    End If
    
    Next Zeile
   
    End Sub
Sheet1 ist vorher leer hat jedoch eine bestimmte formatierung Zeilen und Spaltenbreite, damit man den kopierten bereich auch sehen kann und die texte nicht durcheinander sind

Es werden nun die leeren Zeilen im Sheet 1 gelöscht (ich merke das weil dort die zeilen ein wenig nach oben verrutscht sind), jedoch nicht im kopierten Bereich
woran liegts?
der kopierte bereich ist immer noch 1 zu 1 wie auf dem original, das original darf nicht verändert werden
nur im sheet1 sollten die leeren zeilen gelöscht sein,
hmm?


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Beverly
Geschrieben am: 07.12.2009 12:51:17

Hi Babs,

in meinem nachgebauten Beispiel funktionert der folgende Code fehlerlos:

Sub kopierebereich()
    Dim wks As Worksheet
    Dim Bereich As Range
    Dim Zeile As Long
    Dim ZeileMax As Long
    Set wks = ActiveSheet
    With wks
        Set Bereich = .Range(.Cells(5, 5), _
        .Cells(.Cells.SpecialCells(xlCellTypeLastCell).Row, _
             .Cells.SpecialCells(xlCellTypeLastCell).Column))
        MsgBox "Der benutzte Bereich liegt in: " & Bereich.Address
        Bereich.Copy Workbooks("Mappe3").Sheets(1).Cells(5, 1)
    End With
    Set wks = Nothing
    Set Bereich = Nothing
    Workbooks("Mappe3").Worksheets(1).Activate
    ZeileMax = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    For Zeile = ZeileMax To 1 Step -1
        If Application.WorksheetFunction.CountA(Rows(Zeile)) = 0 Then
            Rows(Zeile).Delete
        End If
    Next Zeile
End Sub

bzw. der folgende (ohne Aktivieren der anderen Arbeitsmappe):
Sub kopierebereich()
    Dim wks As Worksheet
    Dim Bereich As Range
    Dim Zeile As Long
    Dim ZeileMax As Long
    Set wks = ActiveSheet
    With wks
        Set Bereich = .Range(.Cells(5, 5), _
        .Cells(.Cells.SpecialCells(xlCellTypeLastCell).Row, _
             .Cells.SpecialCells(xlCellTypeLastCell).Column))
        MsgBox "Der benutzte Bereich liegt in: " & Bereich.Address
        Bereich.Copy Workbooks("Mappe3").Sheets(1).Cells(5, 1)
    End With
    Set wks = Nothing
    Set Bereich = Nothing
    With Workbooks("Mappe3").Worksheets(1)
        ZeileMax = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
        For Zeile = ZeileMax To 1 Step -1
            If Application.WorksheetFunction.CountA(.Rows(Zeile)) = 0 Then
                .Rows(Zeile).Delete
            End If
        Next Zeile
    End With
End Sub


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Babs
Geschrieben am: 07.12.2009 13:32:02

hallo Beverly,

erstmal vielen dank dafür,

ich weiss jetzt wo das Problem ist, bei meiner Liste enthält eine Spalte ein DropDown Auswahlmenü und
die Spalte daneben eine Excel Formel mit Sverweis etc,
wenn ich diese beiden spalten rausnehme, funktioniert auch zeile löschen, nur darf ich diese nicht rausnehmen
gibt es eine mäglichkeit dieses zu umgehen?


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Babs
Geschrieben am: 07.12.2009 13:37:20

PS: im dopdownmenü kann ich auch leerzeile anzeigen lassen so dass die zelle leer ist dementsprechend wird in der spalte wo die formel ist auch nichts drinne stehen da diese benachbarte zelle abhängig vom dropdownmenü ist, nur wenn etwas anderes("text") im dropdownmenü ausgewählt wird, wird in derbenachbarten zelle automatisch was stehen


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Babs
Geschrieben am: 07.12.2009 13:56:45

sorry, da ist noch was erwähnenswert

excel fragt mich jedesmal beim kopieren ob die vorhandene namensdefinition verwendet werden soll

eine idee wäre noch den kopiervorgang ohne Dropdownmenü und formeln zu gestalten, ich brauch zwar den inhalt dieser beiden spalten jedoch nicht die formel bzw das dopdown menü,


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Beverly
Geschrieben am: 07.12.2009 14:03:18

Hi Babs,

ohne deine Arbeitsmappe zu kennen ist es schwer, etwas zu sagen.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Babs
Geschrieben am: 07.12.2009 14:34:04

hallo, hier ist eine Beispieldatei

https://www.herber.de/bbs/user/66407.xls


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Beverly
Geschrieben am: 07.12.2009 15:39:50

Hi Babs,

da in Spalte B die SVERWEIS-Formel steht, wird sie durch Excel nicht als "leer" interpretiert, _ auch wenn das Formelergebnis "leer" ist. Du musst also prüfen, ob Spalte A, C:F der jeweiligen Zeile leer sind:

            If Application.WorksheetFunction.CountA(Union(.Cells(Zeile, _
                1), .Range(.Cells(Zeile, 3), .Cells(Zeile, 6)))) = 0 Then
                .Rows(Zeile).Delete
            End If

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Benutzten Bereich kopieren und einfügen von: Babs
Geschrieben am: 07.12.2009 15:54:21

hallo, funktioniert super,

dank dir, wäre von allein nicht drauf gekommen


Beiträge aus den Excel-Beispielen zum Thema "Benutzten Bereich kopieren und einfügen"