Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1736to1740
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
Inhaltsverzeichnis

Namensliste nach Bedingung kopieren und sortieren mittels VBA

Namensliste nach Bedingung kopieren und sortieren mittels VBA
28.01.2020 08:17:01
deniz
Hallo ich wünsche einen guten Morgen und hoffe auf Eure Hilfe.
Ich habe eine Namensliste die ich nach folgenden Bedingungen sortieren möchte.
Die Nachnamen stehen in den Zellen B7 bis B65536.
Die Vornamen stehen in den Zellen C7 bis C65536.
Die Zellen N7 bis N65536 habe ich so programmiert, dass sich die jeweilige Zelle bei einem Doppelklick mit einem „a“ füllt (zusätzlich wird die Schriftart und die Schriftfarbe geändert).
Hier der Code:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)
If Not Intersect(Target, Range("N7:N65536 ")) Is Nothing Then  'Bereich für Hacken
Target = IIf(Target = "a", "", "a")
Cancel = True
Range("N7:N65536 ").Font.Name = "Marlett" '=Schriftart setzen
Range("N7:N65536 ").Font.ColorIndex = 3 '=Schriftfarbe setzen
End If
End Sub
Jetzt würde ich gerne nur die Namen (Vornamen und Nachnamen) in Tabelle 2 kopieren deren Spalte
(N) ein „a“ beinhaltet. Zusätzlich soll die daraus entstehende Liste alphabetisch nach den Nachnamen sortiert werden.
Bisher habe ich folgenden Code dafür:

Sub BereichKopieren()
Dim lgLetzte As Long
With Sheets("Tabelle 2")
lgLetzte = .Cells(Rows.Count, 2).End(xlUp).Row + 1
.Range("B" & lgLetzte & ":C" & lgLetzte + 17) = Sheets("Grunddaten")
.Range("B7:B65536:C7:C65536").Value
End With
End Sub

Mir fehlt also noch die Abfrage der Spalte N und die alphabetische Sortierung der Kopierten Zellen.
Irgendwie komme ich hier als Scriptkiddie nicht weiter 

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namensliste nach Bedingung kopieren und sortieren mittels VBA
28.01.2020 09:14:59
Werner
Hallo,
würde ich per Autofilter machen.
Dazu aber eine Frage: Sind in Zeile 7 Überschriften oder sind ab dort schon die Daten, die kopiert werden sollen?
Gruß Werner
AW: Namensliste nach Bedingung kopieren und sortieren mittels VBA
28.01.2020 09:19:47
deniz
Hi Werner,
ab Zeile 7 sind schon die Daten die kopiert werden sollen.
Gruß
AW: Namensliste nach Bedingung kopieren und sortieren mittels VBA
28.01.2020 10:07:48
Werner
Hallo,
kopiert wird ins Zielblatt in Spalte A.
Public Sub Kopieren()
Dim raSortierbereich As Range
Application.ScreenUpdating = False
With Worksheets("Grunddaten") 'Blattname anpassen
If WorksheetFunction.CountIf(.Columns("N"), "a") > 0 Then
.Range("B7").CurrentRegion.AutoFilter field:=13, Criteria1:="a"
With .AutoFilter.Range
.Columns("B:C").Copy
With Worksheets("Zielblatt")
.Range("A" & .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row) _
.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Set raSortierbereich = .Range("A2:B" & .Cells(.Rows.Count, "A").End(xlUp).Row)
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A2"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange raSortierbereich
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
End With
End With
Else
MsgBox "Es sind keine markierten Daten vorhanden."
End If
If .FilterMode = True Then .Range("B7").AutoFilter
End With
Set raSortierbereich = Nothing
End Sub
Gruß Werner
Anzeige
AW: Namensliste nach Bedingung kopieren und sortieren mittels VBA
28.01.2020 10:31:23
deniz
hi, danke erstmal.
Aber leider zeigt mir Excel beim ausführen einen Laufzeitfehler an.
Die Blattnahmen habe ich angepasst.
Laufzeitfehler '1004':
Anwendungs- oder objektdefinierter Fehler
AW: Namensliste nach Bedingung kopieren und sortieren mittels VBA
28.01.2020 10:36:54
Werner
Hallo,
die Aussage bringt mir nichts. In welcher Codezeile denn?
Ohne deine Datei zu haben wird das wohl schwierig. Der Code ist getestet und läuft bei mir.
Gruß Werner
AW: Namensliste nach Bedingung kopieren und sortieren mittels VBA
28.01.2020 11:43:34
deniz
hi, habe auch in einer neuen Datei getestet.
Leider ohne Erfolg.
wenn ich den Code in ein anderes Sub einfüge.
Nennt er mir die nachfolgende Zeile als Fehlerhaft.
.Range("B7").CurrentRegion.AutoFilter field:=13, Criteria1:="a"
Mappe schließen...
Neustart...
hat auch nichts gebracht
Kann es damit zusammenhängen das ich Excel 2010 habe?
Anzeige
AW: Namensliste nach Bedingung kopieren und sortieren mittels VBA
28.01.2020 11:54:17
Werner
Hallo,
kann es sein, dass du von Spalte B bis Spalte N keinen zusammenhängenden Bereich hast?
Dann versuch mal so:
Public Sub Kopieren()
Dim raSortierbereich As Range
Application.ScreenUpdating = False
With Worksheets("Grunddaten") 'Blattname anpassen
If WorksheetFunction.CountIf(.Columns("N"), "a") > 0 Then
.Range("B7:N" & .Cells(.Rows.Count, "N").End(xlUp).Row).AutoFilter field:=13, _
Criteria1:="a"
With .AutoFilter.Range
.Columns("B:C").Copy
With Worksheets("Zielblatt")
.Range("A" & .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row) _
.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Set raSortierbereich = .Range("A2:B" & .Cells(.Rows.Count, "A").End(xlUp).Row)
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A2"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange raSortierbereich
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.Apply
End With
End With
End With
Else
MsgBox "Es sind keine markierten Daten vorhanden."
End If
If .FilterMode = True Then .Range("B7").AutoFilter
End With
Set raSortierbereich = Nothing
End Sub
Wenn es nicht klappen sollte dann lade bitte deine Mappe hoch. Alles andere wäre nur gestochere im Nebel.
Gruß Werner
Anzeige
AW: Namensliste nach Bedingung kopieren und sortieren mittels VBA
28.01.2020 12:09:21
deniz
hi, ja genau habe keinen zusammenhängenden Bereich dazwischen.
Der Code Klappt fas so wie er soll.
Es gibt keine Fehlermeldung mehr.
Jedoch sollte wenn das "a" aus der Zelle entfernt wird, auch der Name aus der Liste im zweiten Blatt verschwinden. Sprich immer wenn sich was in Spalte N ändert muss die Liste erneut erstellt werden.
AW: Namensliste nach Bedingung kopieren und sortieren mittels VBA
28.01.2020 12:51:20
deniz
lässt sich das auch alles ohne Autofilter realisieren?
Ohne Autofilter finde ich den Code flexibler :-)

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige