Microsoft Excel

Herbers Excel/VBA-Archiv

Zeile kopieren und in anderen Bereich einf.

Betrifft: Zeile kopieren und in anderen Bereich einf. von: Thomas
Geschrieben am: 29.08.2014 16:30:30

Einen schönen guten Tag Euch allen!

Ich habe einen Code gefunden der mir Zeilen kopiert wenn... er kopiert mir die Zeilen in Tabelle2 Spalte "A" aber ich würde gerne das der Code die Zeile ab Spalte "O" hin kopiert.
~

Sub Zeilen_kopieren()
Dim Zeile As Long, Spalte As Long, a As Long
Application.ScreenUpdating = False
a = 1
With Worksheets("Tabelle1")
  For Zeile = 8 To 200
    For Spalte = 5 To 6
      If InStr(.Cells(Zeile, Spalte), 40) > 0 Then
        Worksheets("Tabelle1").Rows(Zeile).Copy _
          Destination:=Worksheets("Tabelle2").Rows(a)
        a = a + 1
        Exit For
      End If
    Next Spalte
  Next Zeile
End With
End Sub
~

Welche Zeile muss wie umgeschrieben werden? Danke!

Mit freundlichen Grüßen

Thomas

  

Betrifft: AW: Zeile kopieren und in anderen Bereich einf. von: fcs
Geschrieben am: 29.08.2014 16:50:32

Hallo Thomas,

dann kann das Makro etwa wie folgt aussehen.
Achtung: Wenn die Zellen in Tabelle 1 Formeln enthalten, dann kann es probleme geben.

Gruß
Franz

Sub Zeilen_kopieren()
  Dim Zeile As Long, Spalte As Long, a As Long, Spalte_1 As Long, Spalte_L As Long
  Application.ScreenUpdating = False
  a = 1
  Spalte_1 = 15 'Spalte O - letzte Spalte die kopiert werden soll
  Spalte_L = 26 'Spalte Z - letzte Spalte die kopiert werden soll  - anpassen!!!
  With Worksheets("Tabelle1")
    For Zeile = 8 To 200
      For Spalte = 5 To 6
        If InStr(.Cells(Zeile, Spalte), 40) > 0 Then
          With Worksheets("Tabelle1")
            .Range(.Cells(Zeile, Spalte_1), .Cells(Zeile, Spalte_L)).Copy _
                Destination:=Worksheets("Tabelle2").Cells(a, 1)
          a = a + 1
          Exit For
        End If
      Next Spalte
    Next Zeile
  End With
End Sub



  

Betrifft: Außerdem von: Michael
Geschrieben am: 29.08.2014 17:10:41

Hallo zusammen,

meines Erachtens kann man die innere For-Schleife raushauen und ersetzen durch eine Abfrage mit or:

If InStr(.Cells(Zeile, 5), 40) > 0 Or InStr(.Cells(Zeile, 6), 40) > 0 Then

(Du mußt dann nur das exit for und das next spalte rauswerfen)

Übrigens paßt der Vergleich nicht recht: handelt es sich nun um Zahlen oder um Zeichenketten?
Bei Zahlen ist das InStr für die Katz, bei Zeichenketten solltest Du die 40 in "" setzen.

Excel macht schon irgendwie, aber sauber ist das so, wie es oben steht, nicht.

Happy Exceling,

Michael


  

Betrifft: AW: Zeile kopieren und in anderen Bereich einf. von: Thomas
Geschrieben am: 29.08.2014 17:17:56

Hallo Franz,

Danke für die schnelle Antwort. Formeln sind keine dabei aber bekomme die Meldung "End If ohne If-Block".

Mit freundlichen Grüßen

Thomas


  

Betrifft: AW: Zeile kopieren und in anderen Bereich einf. von: hary
Geschrieben am: 29.08.2014 17:41:24

Moin Thomas
Ein Teil zuviel(schaetz ich)

If InStr(.Cells(Zeile, Spalte), 40) > 0 Then
          With Worksheets("Tabelle1")'----- diese Zeile muss weg----
            .Range(.Cells(Zeile, Spalte_1), .Cells(Zeile, Spalte_L)).Copy _

gruss hary


  

Betrifft: AW: Zeile kopieren und in anderen Bereich einf. von: Thomas
Geschrieben am: 29.08.2014 18:10:49

Danke Hary!

Die Fehlermeldung ist weg und nun weiß ich was der Code von Franz macht aber ich will nicht die Zeile von Spalte bis Spalte Kopiert haben sondern die Zeile in Tabelle2 Spalte "O" Zeile 5 und den nächsten Treffer in Spalte "O" Zeile 6 usw.

Gruß Thomas


  

Betrifft: AW: Zeile kopieren und in anderen Bereich einf. von: hary
Geschrieben am: 29.08.2014 18:23:17

Moin
Willst du wirklich die gesamte Zeile aus Blatt1 nach Blatt2 ab SpalteO bringen?
Da verschiebst du Zellen ueber den Tellerrand und Excel wird meckern. Daher hat Franz die Spalten von bis gesetzt.
Sind wirklich alle Zellen einer Zeile in gebrauch?
Gruss hary


  

Betrifft: AW: Zeile kopieren und in anderen Bereich einf. von: Thomas
Geschrieben am: 29.08.2014 18:35:16

Hallo Hary!

Die Idee ist ja nicht schlecht von Franz und das lasse ich auch so, nur will ich das Ziel wohin kopiert wird definieren also Tab2 Spalte "O" Zeile 5 quasi wie BereichVerschieben.

Gruß Thomas


  

Betrifft: AW: Zeile kopieren und in anderen Bereich einf. von: hary
Geschrieben am: 29.08.2014 18:46:46

Moin
Teste mal.

Sub Zeilen_kopieren()
  Dim Zeile As Long, Spalte As Long, a As Long, Spalte_1 As Long, Spalte_L As Long
  Application.ScreenUpdating = False
  a = 5 '--Anfangszeile im Zielblatt
  Spalte_1 = 1 'Spalte A(1) - erste Spalte die kopiert werden soll - anpassen!!!
  Spalte_L = 10 'Spalte J(10) - letzte Spalte die kopiert werden soll  - anpassen!!!
  With Worksheets("Tabelle1")
    For Zeile = 8 To 200
      For Spalte = 5 To 6
        If InStr(.Cells(Zeile, Spalte), 40) > 0 Then
            .Range(.Cells(Zeile, Spalte_1), .Cells(Zeile, Spalte_L)).Copy _
                Destination:=Worksheets("Tabelle2").Cells(a, 15) '--15 ist Spalte O
          a = a + 1
          Exit For
        End If
      Next Spalte
    Next Zeile
  End With
End Sub

Startspalte und Letzte Spalte muss du anpassen.
gruss hary


  

Betrifft: AW: Zeile kopieren und in anderen Bereich einf. von: Thomas
Geschrieben am: 29.08.2014 19:04:39

Hallo Hary!

Danke das passt soweit und das mit der Anfangszeile das hab ich selbst heraus gefunden.

Wünsche dir noch einen schönen Abend!

Gruß Thomas


  

Betrifft: Bitte gern geschehen und zu. gruss owT von: hary
Geschrieben am: 29.08.2014 19:06:26

.


 

Beiträge aus den Excel-Beispielen zum Thema "Zeile kopieren und in anderen Bereich einf."