Spalten markieren/löschen bis bestimmte Wert enthalten
#1
Morgen zusammen, 

mal wieder ein Makrothema.

Ich habe einen Report der all unsere Aufträge anzeigt. Bis dato war die Spaltenanzahl und der Aufbau immer gleich, wodurch ich nicht benötigte Spalten einfach löschen konnte. 
Jetzt wurde der Report angepasst und ich habe wesentlich mehr Spalten bzw. die Anzahl scheint sich auch häufiger zu ändern. 

Wie kann ich meinem Makro vorgeben, dass es die Überschrift (Zeile 1) durchsuchen soll und alle Spalten markiert/löscht bis ein bestimmter Wert gefunden wurde.
Heißt: 

1. Beginne deine Suche in Zeile 1 - Spalte R 
2. Prüfe jeden Wert in Zeile 1 bis "Ex-Works Price" auftaucht
3. Markiere den Bereich bis zum Schlagwort und lösche ihn

Danke vorab für eure Hilfe!
Antworten Top
#2
Hallo,

in der beiliegenden Exceldatei habe ich dir im Arbeitsblatt "Tabelle1" den Button "Suchen und Löschen" eingefügt.
Ein Klick darauf bewirkt die Ausführung deines Wunschmakros "Suche_Lösche".

Dieses Makro erreichst du auch über die Tastenkombination Alt+F8. Es wird dann jeweils im aktiven Arbeitsblatt ausgeführt.


Angehängte Dateien
.xlsm   PieWie_Suchen_Löschen.xlsm (Größe: 21,56 KB / Downloads: 8)
Mit lieben Grüßen
Anton.

Windows 10 64bit
Office365 32bit
Antworten Top
#3
Hallo Anton, 

sorry für die späte Rückmeldung zu dem Thema. War leider etwas untergegangen. 

Danke nochmal für dein Makro. Soweit passt es auch. Einen Punkt habe ich aber.....
Dein Makro löscht alle Spalten links von der gefundenen Position. Gelöscht werden müssten aber nur die Zeilen links von der gefundenen Position bis der Stelle von wo aus die Suche losging (also R1)

Kann man das auch soweit eingrenzen?

Danke & Grüße
Antworten Top
#4
Hallöchen,

im Code hast Du diese Stelle:

Code:
If lngGefSpalte < rgSucheAb.Column Then
      MsgBox "Die Zelle mit dem Suchtext '" & strSuchtext & "' liegt in " & rgGefZelle.Address & "." & vbNewLine & _
             "Sie liegt damit links von der Zelle R1." & vbNewLine & vbNewLine & _
             "Es werden daher keine Spalten entfernt."
    Else

Versuche mal statt
If lngGefSpalte < rgSucheAb.Column Then
dann
If lngGefSpalte >= rgSucheAb.Column Then
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Hallo,

ich habe den Code dahingehend korrigiert, dass nur die Spalten von Spalte R bis zur Spalte links der gefundenen Stelle entfernt werden; widrigenfalls wird eine Info angezeigt.
Code:
Option Explicit

Public Sub Suche_Lösche()
  Dim Ws As Worksheet
  Dim rgSucheAb As Range, lngSucheAb As Long
  Dim strSuchtext As String
  Dim rgGefZelle As Range, lngGefSpalte As Long
'------
  Set Ws = ActiveSheet
'------
  strSuchtext = "Ex-Works Price"
  Set rgSucheAb = Ws.Range("R1"): lngSucheAb = rgSucheAb.Column
  Set rgGefZelle = Ws.Rows(1).Find(What:=strSuchtext, After:=rgSucheAb.Offset(0, -1), _
                                   LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True, _
                                   SearchOrder:=xlByRows, Searchdirection:=xlNext)
'------
  If rgGefZelle Is Nothing Then
    MsgBox Prompt:="Keine Zelle mit '" & strSuchtext & "' gefunden."
  Else
    lngGefSpalte = rgGefZelle.Column
    If lngGefSpalte <= rgSucheAb.Column Then
      MsgBox "Die Zelle mit dem Suchtext '" & strSuchtext & "' liegt in " & rgGefZelle.Address & "." & vbNewLine & _
             "Sie liegt damit nicht rechts von der Zelle R1." & vbNewLine & vbNewLine & _
             "Es werden daher keine Spalten entfernt."
    Else
      'Suchtext wurde in Zeile 1 ab Zelle R1 gefunden in Zelle rgGefZelle
      'Entferne alle Spalten ab Spalte R bis links der Zelle rgGefZelle
      rgSucheAb.Resize(1, lngGefSpalte - lngSucheAb).EntireColumn.Delete Shift:=xlToLeft
    End If
  End If
 
End Sub
Mit lieben Grüßen
Anton.

Windows 10 64bit
Office365 32bit
Antworten Top


Gehe zu:


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