Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

wert suchen und spalte löschen

Forumthread: wert suchen und spalte löschen

wert suchen und spalte löschen
19.02.2025 13:54:09
Chris
Hallo Forum,

ich möchte einen Wert (String) aus einem Quell-Sheet in einem Zielsheet suchen. Wenn im Zielsheet der Wert gefunden wird, soll die entsprechende Spalte im Zielsheet gelöscht werden.

Ich erhalte bei unten stehendem Makro die Meldung "Anwedungs-/Objektdivinierter Feher", rgnZelle = Nothing
Setze ich bspw. bei SB = "Test" - also einen festen String ein - geht es.

Was muss man ändern?
Gruß
Chris



Sub search()
Dim SB As Variant
Dim rngZelle As Range
Dim lngcol As Long
Dim z As Long

Set qws = Worksheets("Quelle")
Set zws = Worksheets("Ziel")

SB = qws.Cells(ActiveCell.Row, 2).Value

lngcol = zws.Cells(1, Columns.Count).End(xlToLeft).Column

Set rngZelle = zws.Range(Cells(1, 1), Cells(1, lngcol)).Find(What:=SB, _
LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlNext)

z = rngZelle.Column

If Not rngZelle Is Nothing Then
zws.Columns(z).Delete
End if
end sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wert suchen und spalte löschen
19.02.2025 14:18:07
MCO
Moin!

Versuch mal:


Dim SB As String
.
.
.
SB = CStr(qws.Cells(ActiveCell.Row, 2).Value)
On Error Resume Next


Gruß, MCO
AW: wert suchen und spalte löschen
19.02.2025 14:23:31
GerdL
Hallo Chris,

bei ActiveCell sollte das richtige Blatt aktiviert sein.
Den Suchbereich habe ich um fehlende zws vor Cells ergänzt.

Sub search_2()


Dim SB As Variant
Dim rngZelle As Range
Dim lngcol As Long
Dim qws As Worksheet
Dim zws As Worksheet

Set qws = Worksheets("Quelle")
Set zws = Worksheets("Ziel")
qws.Activate
SB = qws.Cells(ActiveCell.Row, 2).Value
If SB = "" Then Exit Sub
lngcol = zws.Cells(1, Columns.Count).End(xlToLeft).Column

Set rngZelle = zws.Range(zws.Cells(1, 1), zws.Cells(1, lngcol)).Find(What:=SB, _
LookIn:=xlValues, Lookat:=xlWhole, SearchDirection:=xlNext)
If Not rngZelle Is Nothing Then
rngZelle.EntireColumn.Delete
Set rngZelle = Nothing
End If

End Sub

Gruß Gerd
Anzeige
AW: wert suchen und spalte löschen
19.02.2025 14:31:57
Chris
Hallo Gerd,

danke - funktioniert nun. Mir war nicht klar, dass man vor .cells nochmal das Sheet angeben musst, da ich das bereits bei zws.range(cells....) gemacht habe.
Seltsam. Wieso ist das so ?

Danke !

Chris
AW: wert suchen und spalte löschen
19.02.2025 14:47:34
GerdL
Ist der Code in einem allgemeinen Modul, wird mit Cells ohne Angabe des Blattes auf
das ActiveSheet referenziert; ist der Code in einem Tabellenblattmodul auf dieses Blatt.
Dies kann dazu führen, dass du bei der Range-Cells-Methode auf zwei verschiedene
Blätter referenzierst. Dann knallt es.
Die Angabe des Blattes vor Range ist bei dieser Syntax nur deklaratorisch.

Gruß Gerd


Anzeige
AW: wert suchen und spalte löschen
19.02.2025 14:21:54
Crazy Tom
moin,

du befindest dich bei der Suche im Quellblatt
deine Suchzeile

set rngZelle = zws.Range(

alles was nach Range kommt ist nicht auf ein Blatt referenziert und nimmt daher das aktive Blatt, in dem Fall Quelle

so habe ich es getestet

    With zws

lngcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
Set rngZelle = .Range(.Cells(1, 1), .Cells(1, lngcol)).Find(What:=SB, _
LookIn:=xlValues, lookat:=xlWhole, SearchDirection:=xlNext)
If Not rngZelle Is Nothing Then
z = rngZelle.Column
.Columns(z).Delete
End If
End With


beachte die Punkte innerhalb der With-Anweisung
mfg Tom
Anzeige
AW: wert suchen und spalte löschen
19.02.2025 14:32:47
Chris
Fnnktioniert ! Danke.
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18