Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1004to1008
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Zeilen Kopieren
28.08.2008 17:33:53
Robert
Hallo allerseits, ich habe sehr viel mit Listen zu tun und muss oft aus einer Liste Zeilen mit bestimmten Kriterien in einer Spalte in ein eigenes Tabellenblatt kopieren.
Daher brauche ich ein Makro was folgendes macht:
1. Inputbox erscheint (eine Eingabe/Anwahlmöglichkeit mit der Maus sollte möglich sein.)
2. Benutzer wählt mit der Maus eine beliebige Zelle in Tabellenblatt 1 aus.
3. Makro generiert ein neues Tabellenblatt (Name = ausgewählte Zelle)
4. Makro kopiert alle Ziel-Zeilen aus Tabellenblatt 1 in das neue Tabellenblatt
(Ziel-Zeilen sind alle Zeilen, welche in der ausgewählten Spalte den Wert der ausgewählten Zelle haben)
folgenden VBA-Code habe ich mir zusammengebastelt, aber er kopiert die Zeilen leider nicht, nach Stunden des rumprobierens finde ich keine Lösung. zudem beschränkt sich der Code auf Spalte A und ich will ein Makro welches erkennt in welcher Spalte das Suchkriterium ist.
Kann mir jemand von Euch vielleicht helfen, Vielen Dank.

Sub CopyValues()
Dim KR As Range
On Error Resume Next
Set KR = Application.InputBox(prompt:="Zelle  anwählen oder für Makroende eine leere Zelle  _
markieren", Title:="Tabellenblatt mit gewünschten Kriterium", Type:=8)
If KR = "" Then Exit Sub
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = KR
Sheets("Tabelle1").Select
Dim lRow As Long, lRowL As Long, lRowT As Long
lRowL = Cells(Rows.Count, 1).End(xlUp).Row
lRowT = 1
For lRow = 2 To lRowL
If (Cells(lRow, 1)) = KR Then
lRowT = lRowT + 1
Worksheets(KR).Rows(lRowT).Value = Rows(lRow).Value
End If
Next lRow
End Sub


4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen Kopieren
28.08.2008 19:00:00
fcs
Hallo Robert,
mit den folgenden Anpassung, werden die Spalten korrekt durchsucht.
gruß
Franz

Sub CopyValues()
Dim KR As Range
Dim wks1 As Worksheet, wksNeu As Worksheet
Dim lngSpalteKR As Long
Dim lRow As Long, lRowL As Long, lRowT As Long
On Error Resume Next
Set wks1 = Worksheets("Tabelle1")
wks1.Activate
Set KR = Application.InputBox(prompt:= _
"Zelle  anwählen oder für Makroende eine leere Zelle markieren", _
Title:="Tabellenblatt mit gewünschten Kriterium", _
Type:=8)
If KR = "" Then Exit Sub
lngSpalteKR = KR.Column
Worksheets.Add After:=Worksheets(Worksheets.Count)
Set wksNeu = ActiveSheet
wksNeu.Name = KR
With wks1
lRowL = .Cells(.Rows.Count, lngSpalteKR).End(xlUp).Row
lRowT = 1
For lRow = 2 To lRowL
If (.Cells(lRow, lngSpalteKR)) = KR Then
lRowT = lRowT + 1
wksNeu.Rows(lRowT).Value = .Rows(lRow).Value
End If
Next lRow
End With
End Sub


Anzeige
AW: Zeilen Kopieren
02.09.2008 13:57:38
Robert
Hallo Franz, Vielen Dank, Dein Makro funktioniert einwandfrei
AW: Zeilen Kopieren
28.08.2008 19:07:00
Uduuh
Hallo,
willst du das so?

Sub CopyValues()
Dim KR As Range
' On Error Resume Next
Set KR = Application.InputBox _
(prompt:="Zelle  anwählen oder für Makroende eine leere Zelle markieren", Title:=" _
Tabellenblatt mit gewünschten Kriterium", Type:=8)
If KR Is Nothing Then Exit Sub
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = KR
'Sheets("Tabelle1").Select
Dim lRow As Long, lRowL As Long, lRowT As Long
lRowL = Cells(Rows.Count, 1).End(xlUp).Row
lRowT = 1
For lRow = 2 To lRowL
If KR.Parent.Cells(lRow, KR.Column) = KR Then
lRowT = lRowT + 1
KR.Parent.Rows(lRow).Copy Worksheets(CStr(KR)).Cells(lRowT, 1)
End If
Next lRow
End Sub


wenn du On Error resume next drin hast, findest du den Fehler nie!
Gruß aus’m Pott
Udo

Anzeige
AW: Zeilen Kopieren
28.08.2008 19:44:57
dan
Option Explicit

Private Sub CopyValues()
Dim KR As Range
'1. Inputbox erscheint (eine Eingabe/Anwahlmöglichkeit mit der Maus sollte möglich sein.)
'2. Benutzer wählt mit der Maus eine beliebige Zelle in Tabellenblatt 1 aus.
On Error Resume Next
Set KR = Application.InputBox(prompt:="Zelle  anwählen oder für Makroende eine leere Zelle  _
markieren", Title:="Tabellenblatt mit gewünschten Kriterium", Type:=8)
On Error GoTo ErrCopyValues
If (KR Is Nothing) Then
Exit Sub
End If
'3. Makro generiert ein neues Tabellenblatt (Name = ausgewählte Zelle)
Dim neuesTabellenblatt As Worksheet
Set neuesTabellenblatt = Worksheets.Add(After:=Worksheets(Worksheets.Count))
neuesTabellenblatt.Name = KR.Cells(1).Value
Dim tabellenblatt1 As Worksheet
Dim ausgewaehlteSpalte As Range
Dim cell1 As Range
Set tabellenblatt1 = Worksheets("Tabelle1")
Set ausgewaehlteSpalte = Application.Intersect(tabellenblatt1.UsedRange, tabellenblatt1. _
Columns(KR.Cells(1).Column))
'4. Makro kopiert alle Ziel-Zeilen aus Tabellenblatt 1 in das neue Tabellenblatt
'(Ziel-Zeilen sind alle Zeilen, welche in der ausgewählten Spalte den Wert der ausgewählten  _
Zelle haben)
Dim rowsCounter As Long
rowsCounter = 1
For Each cell1 In ausgewaehlteSpalte.Cells
If (Strings.StrComp(cell1.Value, KR.Cells(1).Value) = 0) Then
cell1.EntireRow.Copy neuesTabellenblatt.Rows(rowsCounter)
rowsCounter = rowsCounter + 1
End If
Next cell1
Exit Sub
ErrCopyValues:
MsgBox "Error in CopyValues: " & Err.Description, vbCritical, "Error"
End Sub


Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige