Thema Datum  Von Nutzer Rating
Antwort
07.04.2015 10:13:32 Mara
NotSolved
07.04.2015 10:39:24 Gast1790
NotSolved
07.04.2015 11:20:35 Gast32806
NotSolved
07.04.2015 11:27:58 Gast57863
NotSolved
07.04.2015 11:43:54 Mara
NotSolved
Blau ..hast du dir mal meinen geposteten Link zu Gemüte geführt?! (s. 07.04.2015 11:20:35)
07.04.2015 12:35:23 Gast97452
NotSolved
Rot ja
07.04.2015 13:27:15 Mara
Solved
Blau ja
07.04.2015 13:37:34 Gast27438
NotSolved
Rot ja
08.04.2015 08:40:47 Mara
NotSolved
Blau ja
08.04.2015 21:19:31 Gast70521
NotSolved

Ansicht des Beitrags:
Von:
Gast97452
Datum:
07.04.2015 12:35:23
Views:
357
Rating: Antwort:
  Ja
Thema:
..hast du dir mal meinen geposteten Link zu Gemüte geführt?! (s. 07.04.2015 11:20:35)

>> 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ß


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
07.04.2015 10:13:32 Mara
NotSolved
07.04.2015 10:39:24 Gast1790
NotSolved
07.04.2015 11:20:35 Gast32806
NotSolved
07.04.2015 11:27:58 Gast57863
NotSolved
07.04.2015 11:43:54 Mara
NotSolved
Blau ..hast du dir mal meinen geposteten Link zu Gemüte geführt?! (s. 07.04.2015 11:20:35)
07.04.2015 12:35:23 Gast97452
NotSolved
Rot ja
07.04.2015 13:27:15 Mara
Solved
Blau ja
07.04.2015 13:37:34 Gast27438
NotSolved
Rot ja
08.04.2015 08:40:47 Mara
NotSolved
Blau ja
08.04.2015 21:19:31 Gast70521
NotSolved