Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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

ganze Spalten in Range mit Beding. löschen

ganze Spalten in Range mit Beding. löschen
24.06.2020 16:47:46
Andreas
Hallo,
ich brauche mal eure Hilfe. Im folgenden Code werden aus einem Reiter Daten in einen anderen Reiter (eine Vorlage) kopiert. Da die Vorlage mehr Spalten hat, um alle Möglichkeiten wieder zu geben, sollen die gelöscht werden, welche in Zeile 6 Grüße Andreas
Sub Test()
Dim CellRange As Range
Dim rngCell As Range
Set tp = Worksheets("Planung")
Set tv = Worksheets("Verteilung")
Set vl = Worksheets("Vorlage")
Set insert_after = tp
tv.UsedRange.Delete
Sheets("Vorlage").Visible = True
TName = "A13 EG"
vl.Copy After:=insert_after
ActiveSheet.Name = "A13 EG"
Set T_sheet = Worksheets(TName)
Set insert_after = T_sheet
' Filter zurücksetzen
ResetAutoFilter
' Alle Spalten einblenden
tp.Columns.EntireColumn.Hidden = False
' Bereich auswaehlen
EndRow = tp.Cells(tp.Rows.Count, 1).End(xlUp).Row
Set alltours = tp.Range(tp.Cells(1, 1), tp.Cells(EndRow, 40))
alltours.AutoFilter Field:=2, Criteria1:="*A13 EG*"
' Spalten verbergen
tp.Columns(1).EntireColumn.Hidden = True
tp.Columns(3).EntireColumn.Hidden = True
tp.Columns(4).EntireColumn.Hidden = True
tp.Columns(5).EntireColumn.Hidden = True
tp.Columns(42).EntireColumn.Hidden = True
tp.Columns(43).EntireColumn.Hidden = True
tp.Columns(44).EntireColumn.Hidden = True
tp.Columns(47).EntireColumn.Hidden = True
tp.Columns(48).EntireColumn.Hidden = True
tp.Rows(1).EntireRow.Hidden = True
On Error Resume Next
alltours.SpecialCells(xlCellTypeVisible).Copy
T_sheet.Cells(8, 2).PasteSpecial xlPasteValues
On Error GoTo 0
' Spalten und Zeilen auf dem Reitern verbergen, HIER BENÖTIGE ICH DIE HILFE
Set CellRange = Range("D3:AK3")
For Each rngCell In CellRange.Cells
rngCell.EntireColumn.Delete = rngCell.Value 

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ganze Spalten in Range mit Beding. löschen
24.06.2020 17:02:04
ralf_b
vielleicht so?
 For Each rngCell In Range("D3:AK3")
if rngCell.Value 

AW: ganze Spalten in Range mit Beding. löschen
25.06.2020 07:46:10
Andreas
Hallo Ralf,
er löscht zwar Spalten aber nicht alle, sondern nur einen kleinen Bruchteil.
AW: ganze Spalten in Range mit Beding. löschen
24.06.2020 22:55:58
GerdL
Moin, etwas sicherer:
Dim rngDel As Range
Set CellRange = Range("D3:AK3")
For Each rngCell In CellRange.Cells
If rngCell.Value 

Gruß Gerd
AW: ganze Spalten in Range mit Beding. löschen
25.06.2020 07:47:06
Andreas
Hallo Gerd,
dein Code bewirkt leider nichts. Er wird zwar duchlaufen, aber nicht wird gelöscht
AW: ganze Spalten in Range mit Beding. löschen
25.06.2020 12:28:53
Gerd
Hallo Andreas,
du kannst die Bedingung ergänzen:
If rngCell.Value <= 0 Or rngCell.Value = "" Then
und prüfen, ob du den Code bei dir über das richtige Blatt u. den richtigen Zeilenbereich laufen lässt.
Gruß Gerd
Anzeige
AW: ganze Spalten in Range mit Beding. löschen
24.06.2020 23:11:19
Daniel
Hi
Noch ne Möglichkeit, Spalten mit Bedingung zu löschen.
With Sheets("Name des Blattes").UsedRange
With .Rows(.Rows.Count + 1)
.FormulR1C1 = "=If(R6C 0 then _
.SpecialCells(xlCellTypeFormulas, 1).EntireColumn.delete
.ClearContents
End with
End with
Gruß Daniel
AW: ganze Spalten in Range mit Beding. löschen
25.06.2020 07:48:46
Andreas
Hallo Daniel,
bei dir kommt in der Zeile

.FormulR1C1 = "=If(R6C
ein Laufzeitfehler.
AW: ganze Spalten in Range mit Beding. löschen
25.06.2020 08:55:21
Daniel
Falsch.
Bei dir kommt der Laufzeitfehler.
Code, den du dir aus dem Internet kopierst ist immer dein Code, weil du dafür verantwortlich bist, dass er funktioniert.
Ausserdem wäre es sinnvoll, wenn du dir die Fehlermeldung genauer anschaust, denn der Text der Fehlermeldung enthält oft schon einen Hinweis auf die Fehlerursache.
Solltest du eine weitere Person um Hilfe bei der Suche nach der Fehlerursache bitten, wäre es aus diesem Grund natürlich auch sinnvoll, dieser Person den Text der Fehlermeldung mitzuteilen.
nun zu deinem Fehler:
du hast beim : ".FormulR1C1" einen Buchstaben vergessen, die Anweisung heißt korrekt: ".FormulaR1C1"
kleiner Tip: nutze beim Schreiben von Code immer die IntelliSense.
dh du tippst die ersten Buchstaben eines Befehls ein und drückst dann STRG+Leertaste.
der VBA-Editor vervollständigt dann den Befehl oder er bietet dir eine Auswahlliste an.
Damit vermeidest du solche Tippfehler.
Der Editor in diesem Forum bietet diesen Service natürlich nicht.
Daher können Codes, die vom Antworter direkt in den Forumseditor geschrieben werden, solche Schreibfehler enthalten.
Daher ist es immer sinnvoll, solche Codes nicht einfach zu kopieren, sondern zu lesen, verstehen und dann selber zu schreiben.
Gruß Daniel
Anzeige
AW: ganze Spalten in Range mit Beding. löschen
25.06.2020 12:00:50
Andreas
Hallo Daniel,
also mit "bei dir" war auf deinen Post bezogen, wie "bei dir was du geschrieben hast". Beim Laufzeitfehler stand was mit der Methode. Dies hatte ich öfter und war immer der Grund, dass was komplett falsch war und nicht nur ein Tippfehler. Aber werde es beherzigen selber zu schreiben.
Generell gehe ich jeden Code aus einem Forum oder so durch. Möchte mich ja verbessern :)
Deinen habe ich auch versucht nachzuvollziehen, aber ich verstehe schon nicht, wieso du Reihen zählst, wenn ich die Spalten wissen will. Und bei Formeln im Code (RC6,...) etc. bin ich noch nicht. Leider.
Zu deiner Lösung:
Es funktioniert mit dem a am Ende super. Wenn man das Gleiche für Zeilen anwenden will, muss man jetzt die Spalten zählen?
Viele Grüße
Anzeige
AW: ganze Spalten in Range mit Beding. löschen
25.06.2020 12:59:32
Daniel
Hi
ja klar, war mein Fehler.
aber ich erwarte, wenn ich dir schon kostenfrei helfe, etwas mehr Eigeninitiative als nur Kopiern/Einfügen. Und du hast dir ja zumindest für mich sichtbar nicht mal die Mühe gemacht, die Fehlermeldung genauer durchzulesen.
zu deiner Frage: naja, wenn ich die Spalten kennzeichnen will, die gelöscht werden sollen, dann macht man das in einer Zeile.
Da das eine neue Zeile ist, die vorhandene Daten nicht überschreiben soll, muss man sie am Ende der vorhandenen Daten einfügen, also muss man zählen, wieviele Zeilen überhaupt vorhanden sind, damit man weiß welches die erste freie Zeile ist.
Wenn man Zeilen kennzeichnen will, dann macht man das in einer Spalte.
der rest funktioniert dann analog, nur eben Zeilen- und Spalten getauscht.
außerdem hast du beim Löschen von Zeilen zusätzlich das Duplikate Entfernen als Werkzeug zur Verfügung, was beim Löschen nochmal schneller ist als das Delete.
Gruß Daniel
Anzeige
AW: ganze Spalten in Range mit Beding. löschen
25.06.2020 19:28:54
Andreas
Hallo Daniel,
wie gesagt, sollte nicht so rüberkommen. Ich bin dir echt dankbar für deine Hilfe und finde es auch Klasse. Hab jetzt (und wie gesagt versuche ich es immer) es auf andere Sachen zu adaptieren.
Leider klappt es nicht ganz. Wie bereits erwähnt mit den Formelnbezeichnungen kenn ich mich nicht aus.
Von C8:C32 stehen ebenfalls die Werte drin, wo geschaut werden soll, dass nach dem kopieren alle leeren Zeilen gelöscht werden. Aber es passiert nichts. Auch keine Fehlermeldung.
Viele Grüße
With Sheets("A13 EG_neu").UsedRange
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=If(R1C 0 Then _
.SpecialCells(xlCellTypeFormulas, 1).EntireRow.Delete
.ClearContents
End With
End With

Anzeige
AW: ganze Spalten in Range mit Beding. löschen
26.06.2020 20:25:10
Daniel
Hi
Setzte mal einen Haltepunkt nach dem Einfügen der Formel und schau dir die Formelergebnisse und die Formel mal an.
Fällt dir was auf?
Gruß Daniel
AW: ganze Spalten in Range mit Beding. löschen
26.06.2020 20:25:10
Daniel
Hi
Setzte mal einen Haltepunkt nach dem Einfügen der Formel und schau dir die Formelergebnisse und die Formel mal an.
Fällt dir was auf?
Gruß Daniel
AW: ganze Spalten in Range mit Beding. löschen
26.06.2020 20:25:10
Daniel
Hi
Setzte mal einen Haltepunkt nach dem Einfügen der Formel und schau dir die Formelergebnisse und die Formel mal an.
Fällt dir was auf?
Gruß Daniel

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige