(VBA) If-Abfragen-Problem
#21
@frogger,

finden ist nicht "" sondern Nothing. Das umgeht Uwe in seinem Code auch schon in beiden Fällen.

@Easy,

ich bin noch am fummeln Smile 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)
Top
#22
Prima.. und was dazugelernt! Danke Kuwer!
Top
#23
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 ^^
Top
#24
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)
Top
#25
:100:  Wow!!! Danke
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste