Hallo liebes Forum,
erstmal großen Respekt davor, was hier aufgebaut wurde! Ich bin über dieses Forum gestolpert, weil ich nicht weiterkomme, bzw. nicht einmal weiß, ob mein Vorhaben in Excel umzusetzen ist.
Ich habe eine Spalte voll mit verschiedenen Werten. Nun möchte ich nach einem bestimmten Wert suchen. Excel soll mir dann:
A) Anzeigen ob der gesuchte Wert existiert
und
B) Wenn der Wert existiert, ihn automatisch aus der Spalte löschen
Ist das irgendwie umsetzbar? Ich hoffe auf eure Hilfe und sage schon einmal vielen Dank im Voraus!
Hallo,
hier eine mögliche Variante:
Code:
Sub such()
Dim suchSpalte As Long
Dim suchWert
Dim vntZ
suchSpalte = 1 'Spalte A
suchWert = "kuckuck"
vntZ = Application.Match(suchWert, Columns(suchSpalte), 0)
If IsNumeric(vntZ) Then
MsgBox "Ok, hast mich gefunden!" & vbLf & vbLf & "Tu, was Du tun musst!"
Rows(vntZ).Delete 'ganze zeile wird gelöscht
'Cells(vntZ, suchSpalte).ClearContents 'Zellinhalt wird gelöscht
Else
MsgBox suchWert & " hat sich gut versteckt oder existiert in Spalte " & suchSpalte & " gar nicht!"
End If
End Sub
Wenn Du damit nicht klar kommst, dann stell bitte einen Tabellenausschnitt mit Beispielwerten ein.
Lies dazu die mit wichtig gekennzeichneten Beiträge im Forumskopf.
Edit:
Beim Löschen kann natürlich nur eine der Zeilen im Code ausgeführt werden, deshalb habe ich jetzt die Andere auskommentiert.
Also so stelle ich mir das ungefähr vor. Komme ich da mit deinem Code weiter? Vielen Dank für deine Hilfe! :)
Hallo,
das musst Du entscheiden. Einfach mal einfügen und testen.
In der Tabelle könntest Du Dir auch schon so einen Überblick verschaffen:
Arbeitsblatt mit dem Namen 'Tabelle1' |
| A | B | C | D | E |
3 | CODESUCHE: | 3659794782 | | Code vorhanden: | Ja |
4 | | | | in Zeile | 6 |
5 | Verfügbare
Codes | | | | |
6 | 3659794782 | | | | |
7 | 6973587376 | | | | |
Zelle | Formel |
E3 | =WENN(ZÄHLENWENN(Tabelle2[Verfügbare
Codes];$B$3);"Ja";"Nein") |
D4 | =WENN(E3="Ja";"in Zeile";"") |
E4 | =WENN(E3="Ja";VERGLEICH(B3;Tabelle2[Verfügbare
Codes];0)+5;"") |
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg |
Und hier der Code noch einmal angepasst.
Er sucht nach dem Wert in B3 und fragt bei Fund noch einmal nach, ob gelöscht werden soll.
Code:
Sub such()
Dim suchSpalte As Long
Dim suchWert
Dim vntZ
suchSpalte = 1 'Spalte A
suchWert = Cells(3, 2).Value 'Wert aus Zelle B3 wird gesucht
vntZ = Application.Match(suchWert, Columns(suchSpalte), 0)
If IsNumeric(vntZ) Then
If MsgBox(suchWert & " wurde in Zelle A" & vntZ & " gefunden!", vbYesNo, "Frage") = vbYes Then
' Rows(vntZ).Delete 'ganze zeile wird gelöscht
Cells(vntZ, suchSpalte).Clear 'Zellinhalt wird
End If
Else
MsgBox suchWert & " hat sich gut versteckt oder existiert in Spalte " & suchSpalte & " gar nicht!"
End If
End Sub
Hallo kunst...
da du ja vorbildlich eine benannte Tabelle nutzt, hier einmal attilas Code angepasst auf die benannte Tabelle.
Ein Vorteil von benannten Objekten für Makroprogrammierung ist, dass die Positionen in den Programmen nicht mehr fest eingegen werden müssen.
Wenn ich also die Objekte in der Tabelle verschiebe muss ich das Programm nicht ändern.
Code:
Sub cbLoeschen_Click()
Dim vntWert
Dim vntZ
vntWert = ThisWorkbook.Names("Suchwert").RefersToRange.Value
vntZ = Application.Match(vntWert, Range("Tabelle2[Verfügbare Codes]"), 0)
If IsNumeric(vntZ) Then
ListObjects("Tabelle2").ListRows(vntZ).Delete
Else
MsgBox suchWert & " nicht vorhanden!"
End If
End Sub
Achtung!
1) Ich habe auch der Zelle mit dem Suchwert einen Namen gegeben.(Damit er auch verschoben werden kann ohne das Makro anpassen zu müssen.)
2) Ich habe den manuellen Zeilenumbruch in der Überschrift entfernt.