>> Die erste Version funktioniert aber wie gesagt in einem anderen Testdokument.
>> Wenn ich Set davorschreibe, kann ich die Range nicht mehr löschen.
Äh, wieso das den?
Bei mir verhärtet sich langsam der Verdacht, dass du die Grundlagen noch nicht inne hast.
So wie ich dich verstanden habe, suchst du nach einem Ausdruck und wenn dieser gefunden wird, soll die gesamte Spalte, in der er steht, gelöscht werden.
Das geht dann so:
Option Explicit
Sub Test()
'Deletes the column "Sub-Region" if it exists
Dim SR As Range
With ThisWorkbook.Worksheets("Container1").UsedRange 'ThisWorkbook ggf. ändern
Set SR = .Find("Sub-Region", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
If Not SR Is Nothing Then
SR.EntireColumn.Delete
Else
Set SR = .Find("Subregion", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
If Not SR Is Nothing Then
SR.EntireColumn.Delete
End If
End If
End With
End Sub
Anmerkung zu LookAt:
xlWhole ... der gesamte Zelleninhalt muss dem Suchkriterium entsprechen
xlPart ... ein Teil des Zelleninhalt muss dem Suchkriterium entsprechen
Noch eine Anmerkung:
In deinem ersten Code beziehen sich die zwei (unten) markierte Zeile nicht zwingend auf Workbooks(dbName).Worksheets("Container1").
Es kommt dabei vielmehr darauf an WO GENAU der Code in deinem Projekt steht. Steht er z.b. im Klassenmodul von Tabelle1, dann bezieht sich auch diese Range auf dieses Blatt. Steht es in einem Modul, dann bezieht sich die Range sich auf ActiveSheet (d.h. das aktive Blatt und dies wiederum muss nicht zwingend ein Tabellenblatt sein ... kann auch ein Diagrammblatt sein, wenn sowas in der Mappe vorhanden sein sollte).
'Deletes the column "Sub-Region" if it exists
Dim SR As Range
SR = Workbooks(dbName).Worksheets("Container1").Cells.Find("Sub-Region") ' da fehlt das Set vor der Variable
If Not SR Is Nothing Then
Range(SR.Column, SR.Column).Delete
Else
SR = Workbooks(dbName).Worksheets("Container1").Cells.Find("Subregion") ' da fehlt das Set vor der Variable
If Not SR Is Nothing Then
Range(SR.Column, SR.Column).Delete
End If
End If
Es gilt also:
Gib exakt an WORAUF du dich beziehst. Damit ersparst du dir nämlich ne Menge Arbeit hinten raus, glaub mir. Auch wenn das auf den ersten Blick als übertrieben aussieht, es ist wirklich hilfreich... du wärst nämlich in diesem Fall gar nicht erst hier mit deinem Anliegen. ;)
Gruß
|