Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
@frogger,
finden ist nicht "" sondern Nothing. Das umgeht Uwe in seinem Code auch schon in beiden Fällen.
@Easy,
ich bin noch am fummeln

Wenn Du Listen hast, wäre es im Prinzip angebracht, auch im Code damit zu arbeiten. Das hat dann auch den Vorteil, dass Du Dich z.B. nicht mehr nach der letzten Zeile umschauen musst ...
Du hast ja ein kleines Makro, wo Du prüfst, ob was gefunden wird. Das könnte dann so aussehen:
Code:
Sub Identischen_Namen_finden()
Dim finden As Range
Set finden = ThisWorkbook.Sheets("Mitarbeiter").ListObjects("Tab_Mitarbeiter1"). _
ListColumns("Name").DataBodyRange.Find(what:="Wurst", lookat:=xlWhole)
If Not finden Is Nothing Then
MsgBox "Gefunden"
End If
End Sub
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 02.12.2017
Version(en): Office 365
Prima.. und was dazugelernt! Danke Kuwer!
Registriert seit: 28.05.2017
Version(en): 365
26.08.2018, 11:33
(Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2018, 11:33 von EasY.)
Ihr glaubt gar nicht, wie euphorisch ich gerade bin, dass es gelöst zu sein scheint .... ein Feldversuch mit allen Varianten steht noch aus aber das sind so super Lösungen hier.
@schauan
Das ist mir nun recht peinlich, aber ich wusste nicht, dass ich die Namen der intelligenten Listen auch in VBA ansprechen kann ... das macht vieles erheblich einfacher, da gebe ich dir vollkommen recht!!!!
Dann arbeitet man mit Listobjects ok ... noch mehr gelernt :). Wie gesagt, mein erstes VBA-Projekt, da geht sicher einiges besser ^^
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
26.08.2018, 12:09
(Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2018, 14:24 von Kuwer.
Bearbeitungsgrund: Codeurheber geändert
)
Hallo Easy,
ich habe hier mal noch Uwe's Code auf die Listobjects angepasst, einige ursprünglichen codes auskommentiert und ein paar Kommentare dazu geschrieben.
Code:
Sub Wunschloeschen_Andre()
Dim finden As Range
Dim finden2 As Range
Dim Frage As Integer
'Dim last As Long
'Objekte
Dim objLMit As ListObject, objLUrl As ListObject
'last = ThisWorkbook.Sheets("Urlaubswuensche").Cells(Rows.Count, 1).End(xlUp).Row
'Tabellenobjekte zuweisen
Set objLMit = ThisWorkbook.Sheets("Mitarbeiter").ListObjects("Tab_Mitarbeiter1")
Set objLUrl = ThisWorkbook.Sheets("Urlaubswuensche").ListObjects("Tabelle2")
'Namen finden
Set finden = objLMit.ListColumns("Name").DataBodyRange.Find(what:="Wurst", lookat:=xlWhole)
Set finden2 = objLUrl.ListColumns("Name").DataBodyRange.Find(what:="Wurst", lookat:=xlWhole)
'Sicherheitsfrage
Frage = MsgBox("Der folgende Mitarbeiter und alle seine Urlaubsw?nsche werden unwiderruflich gel?scht: " _
+ Chr(13) + Chr(13), vbOKCancel + vbExclamation, "Mitarbeiter l?schen?")
If Frage = vbOK Then
If Not finden Is Nothing Then
'finden.EntireRow.Delete shift:=xlUp
'Zeile in Mitarbeiter loeschen, Zeilennummer um 1 korrigiert wegen
'Mitzaehlung der Ueberschrift bei Find
objLMit.DataBodyRange.Rows(finden.Row - 1).Delete
If Not finden2 Is Nothing Then 'And last > 1 Then
'With finden2.Parent
With objLUrl
.Range.AutoFilter field:=1, Criteria1:="Wurst"
'hier (wieder) die sichtbaren Zellen loeschen
.DataBodyRange.SpecialCells(xlCellTypeVisible).Delete 'shift:=xlUp
.Range.AutoFilter
End With
'Unload Me
End If
End If
End If
End Sub
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 28.05.2017
Version(en): 365