Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1404to1408
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Spalten löschen nach Prüfung einer Zelle

Spalten löschen nach Prüfung einer Zelle
04.02.2015 01:13:11
pan
Hallo zusammen,
ich habe folgendes, für mich leider kniffliges, Problem:
Ich möchte gerne das in einem bestimmten Arbeitsblatt ("ÜBERSICHT") geprüft wird ob
der Wert in Zelle (1, O) = 0 ist.
(Dieser Wert 0 entsteht aus einem anderen Arbeitsblatt. Ist dort in einer bestimmten Zelle ein Text eingetragen erscheint dieser auch in der Zelle (1, O). Ist dort eben kein Text eingetragen zeigt Zelle (1, O) 0 an.)
Sollte das der Fall sein, sollen die Spalten K bis T gelöscht werden.
Das ganze soll dann insgesamt 7 mal wiederholt werden:
- wenn Zelle (1, Y) = 0 sollen Spalten U bis AD gelöscht werden
- wenn Zelle (1, AI) = 0 sollen Spalten AE bis AN gelöscht werden
usw..
Hoffe wie immer auf Eure Hilfe.
Vielen Dank& Gruss, pan

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten löschen nach Prüfung einer Zelle
04.02.2015 08:43:56
Klaus
Hallo Pan,
was soll den die Schreibweise Zelle (1, Y) ? Wenn du Y1 meinst, dann schreib doch Y1. oder cells(1,25) (wenn schon, denn schon!).
Hier dein Code:
With Sheets("ÜBERSICHT")
If .Range("O1").Value = 0 Then .Range("K1:T1").EntireColumn.ClearContents
If .Range("Y1").Value = 0 Then .Range("U1:AD1").EntireColumn.ClearContents
If .Range("AI1").Value = 0 Then .Range("AE1:AN1").EntireColumn.ClearContents
End With
Wenn es immer die gleiche Logik ist (4 nach links, 5 nach rechts, 10 insgesamt) dann einfacher so:

Sub CallMany()
With Sheets("ÜBERSICHT")
Call ZehnSpalten(.Range("O1"))
Call ZehnSpalten(.Range("Y1"))
Call ZehnSpalten(.Range("AI1"))
End With
End Sub
Sub ZehnSpalten(myRange As Range)
If myRange.Value = 0 Then
myRange.Offset(0, -4).Resize(1, 10).EntireColumn.ClearContents
End If
End Sub
Die angesprochene Formel in O1, Y1, AI1 geht dabei aber flöten. Ich nehme an das möchtest du so.
Grüße,
Klaus M.vdT.

Anzeige
AW: Spalten löschen nach Prüfung einer Zelle
04.02.2015 08:46:02
Tino
Hallo,
kannst mal so testen.
Sub test()
Dim rng As Range, rngTmp As Range, rngLoesch As Range
Dim ArDaten
Dim n%

'Prüfe Spalte, Lösche Spalte, Prüfe Spalte, lösche Spalte, ... 
ArDaten = Array(15, "K:T", 25, "U:AD", 35, "AE:AN")

On Error GoTo ErrorHandler:
Events_ False
With Worksheets("Übersicht") 'Tabelle 
    'Hilfsspalte = letzte 
    Set rng = Intersect(.UsedRange.EntireRow, .Columns(.Columns.Count))
    For n = Lbound(ArDaten) To Ubound(ArDaten) Step 2
        Set rngTmp = .Range(ArDaten(n + 1))
        'Formel für Prüfung 
        rng.FormulaR1C1 = "=IF((RC" & ArDaten(n) & "=0)*(RC" & ArDaten(n) & "<>""""),1,"""")"
        If Application.WorksheetFunction.CountIf(rng, 1) > 0 Then
            Set rngLoesch = rng.SpecialCells(xlCellTypeFormulas, 1).EntireRow
            Set rngLoesch = Intersect(rngLoesch, rngTmp)
            rngLoesch.ClearContents 'nur Inhalt löschen 
'            rngLoesch.Clear 'alles löschen 
        End If
    Next n
    'Hilfsspalte löschen 
    rng.EntireColumn.Delete
End With

ErrorHandler:
Events_ True
If Err.Number <> 0 Then
    MsgBox Err.Number & vbCr & vbCr & Err.Description, vbCritical, "Fehler!"
End If
End Sub

Sub Events_(booSchalter As Boolean)
With Application
    .ScreenUpdating = booSchalter
    .EnableEvents = booSchalter
    .DisplayAlerts = booSchalter
    .Calculation = IIf(booSchalter, xlCalculationAutomatic, xlCalculationManual)
End With
End Sub
Gruß Tino
Anzeige

136 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige