Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1268to1272
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
Finden und danach löschen
Ralph
Hallo Forum,
Habe folgendes Problem:
Suche bestimmten Datensatz und kopiere diesen in ein neues Tabellenblatt.
Das klappt auch gut.
Jetzt möchte ich aber den eben gefundenen datensatz nach dem kopieren löschen.
Vielleicht kann mir jemand helfen.
hier mein VBA Code:
Private Sub CommandButton1_Click()
Dim mySearch, firstAddress
Dim strText As String
Dim lngLast As Long
Dim neublatt As String
neublatt = InputBox("Bitte geben Sie die Abrechnungsnummer ein.", "search&find")
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Abrechnung_" & neublatt
Sheets("Abreisen").Select
strText = "x"
Range("O1").Select
If LenB(strText) > 0 Then
With Sheets("Abreisen").Columns(ActiveCell.Column)
Set mySearch = .Find(strText, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False)
If Not mySearch Is Nothing Then
firstAddress = mySearch.Address
Do
With Sheets("Abrechnung_" & neublatt)
lngLast = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
Rows(mySearch.Row).Copy .Cells(lngLast, 1)
End With
Set mySearch = .FindNext(mySearch)
Loop While mySearch.Address  firstAddress
End If
End With
End If
End Sub

_____________________________________________
Danke
Ralph
AW: Finden und danach löschen
14.07.2012 17:28:28
Hajo_Zi
Rows(mySearch.Row).Copy .Cells(lngLast, 1)
Rows(mySearch.Row).Delete

AW: Finden und danach löschen
14.07.2012 17:42:10
Ralph
Hallo Hajo,
Danke für die schnelle Antwort, aber jetzt bringt er einen Fehler und zwar bei
Set mySearch = .FindNext(mySearch)
Ralph
AW: Finden und danach löschen
14.07.2012 17:43:21
Hajo_Zi
Hallo Ralph,
Ich baue keine Datei nach, die Zeit hat schon jemand investiert. Ein Link zur Datei wäre nicht schlecht.
Gruß Hajo
AW: Finden und danach löschen
14.07.2012 18:04:33
Hajo_Zi
Hallo Ralph,
ich habe das select jetzt nicht entfernt.
Private Sub CommandButton1_Click()
Dim mySearch, firstAddress
Dim strText As String
Dim lngLast As Long
Dim neublatt As String
neublatt = InputBox("Bitte geben Sie die Abrechnungsnummer ein.", "search&find")
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = "Abrechnung_" & neublatt
Sheets("Abreisen").Select
Range("O1").Select
strText = "x"
If LenB(strText) > 0 Then
With Sheets("Abreisen").Columns(ActiveCell.Column)
Set mySearch = .Find(strText, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False)
If Not mySearch Is Nothing Then
firstAddress = mySearch.Address
Do
With Sheets("Abrechnung_" & neublatt)
lngLast = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
Rows(mySearch.Row).Copy .Cells(lngLast, 1)
Rows(mySearch.Row).Delete Shift:=xlUp
End With
Range("O1").Select
Set mySearch = .Find(strText, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False)
Loop While mySearch.Address  firstAddress
End If
End With
End If
End Sub

Gruß Hajo
Anzeige
AW: Finden und danach löschen
14.07.2012 17:55:53
Josef

Hallo Ralph,
probier es so.
Private Sub CommandButton1_Click()
  Dim mySearch As Range, rngCopy As Range
  Dim strText As String, firstAddress As String
  Dim lngLast As Long
  Dim neublatt As String
  
  neublatt = InputBox("Bitte geben Sie die Abrechnungsnummer ein.", "search&find")
  Sheets.Add After:=Sheets(Sheets.Count)
  ActiveSheet.Name = "Abrechnung_" & neublatt
  Sheets("Abreisen").Select 'unnötig!
  strText = "x"
  Range("O1").Select 'unnötig!
  If LenB(strText) > 0 Then
    With Sheets("Abreisen").Columns(ActiveCell.Column)
      Set mySearch = .Find(strText, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False)
      If Not mySearch Is Nothing Then
        firstAddress = mySearch.Address
        Do
          If rngCopy Is Nothing Then
            Set rngCopy = mySearch.EntireRow
          Else
            Set rngCopy = Union(rngCopy, mySearch.EntireRow)
          End If
          Set mySearch = .FindNext(mySearch)
        Loop While mySearch.Address <> firstAddress
      End If
    End With
  End If
  
  If Not rngCopy Is Nothing Then
    With Sheets("Abrechnung_" & neublatt)
      lngLast = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
      rngCopy.Copy .Cells(lngLast, 1)
      rngCopy.Delete
    End With
  End If
  
  Set rngCopy = Nothing
  Set mySearch = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Finden und danach löschen
14.07.2012 18:19:22
Ralph
Hallo Sepp,
tausend Dank, funktioniert einwandfrei.
Da es ja nun einige abrechnungen geben wird, hätte ich gerne noch das der Arechnungsname den ich vergen habe immer in das tabellenblatt ABRECHNUNGEN geschrieben wird.
Vielleicht könntest du mir hierzu auch einen Tip geben.
Danke Ralph
AW: Finden und danach löschen
14.07.2012 18:29:49
Josef

Hallo Ralph,
wo soll den das hingeschrieben werden (Zelle) und was?

« Gruß Sepp »

Anzeige
AW: Finden und danach löschen
14.07.2012 18:36:21
Ralph
Hallo Sepp,
ich habe jetzt noch ein Tabellenblatt angelegt mit dem Namen "Abrechnungen".
In dieses soll mein vergebener Abrechnungsname in Zelle a1, der nächste in a2 usw. reingeschrieben werden.
Danke Ralph
AW: Finden und danach löschen
14.07.2012 18:43:11
Josef

Hallo Ralph,
Private Sub CommandButton1_Click()
  Dim mySearch As Range, rngCopy As Range
  Dim strText As String, firstAddress As String
  Dim lngLast As Long
  Dim neublatt As String
  
  neublatt = InputBox("Bitte geben Sie die Abrechnungsnummer ein.", "search&find")
  Sheets.Add After:=Sheets(Sheets.Count)
  ActiveSheet.Name = "Abrechnung_" & neublatt
  Sheets("Abreisen").Select 'unnötig!
  strText = "x"
  Range("O1").Select 'unnötig!
  If LenB(strText) > 0 Then
    With Sheets("Abreisen").Columns(ActiveCell.Column)
      Set mySearch = .Find(strText, After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False)
      If Not mySearch Is Nothing Then
        firstAddress = mySearch.Address
        Do
          If rngCopy Is Nothing Then
            Set rngCopy = mySearch.EntireRow
          Else
            Set rngCopy = Union(rngCopy, mySearch.EntireRow)
          End If
          Set mySearch = .FindNext(mySearch)
        Loop While mySearch.Address <> firstAddress
      End If
    End With
  End If
  
  If Not rngCopy Is Nothing Then
    With Sheets("Abrechnung_" & neublatt)
      lngLast = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
      rngCopy.Copy .Cells(lngLast, 1)
      rngCopy.Delete
    End With
    With Sheets("Abrechnungen")
      lngLast = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
      .Cells(lngLast, 1) = neublatt
    End With
  End If
  
  Set rngCopy = Nothing
  Set mySearch = Nothing
End Sub




« Gruß Sepp »

Anzeige
AW: Finden und danach löschen
14.07.2012 19:12:36
Ralph
Hallo Sepp,
Genial, genial, genial
Danke Danke Danke
Ralph
AW: Finden und danach löschen
14.07.2012 19:12:49
Ralph
Hallo Sepp,
Genial, genial, genial
Danke Danke Danke
Ralph

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige