Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel Makro, spalten automatisch löschen

Forumthread: Excel Makro, spalten automatisch löschen

Excel Makro, spalten automatisch löschen
26.08.2005 11:01:11
MS
Hallo,
ich habe folgendes Problem mit dem unten aufgeführten Makro.
Das Makro bearbeitet eine Ausgangstabelle mit 26 Spalten und 150 Zeilen.
Es sucht eine Spalte nach Namen ab und erstellt anschließend für jeden Namen ein eigenes Sheet. In jedem Sheet ist dann der jeweilige gefundene Name incl. der kompletten Zeile, die sich aus 26 Zellen zusammensetzt.
Ich benötige aber nur 6 bestimmte Zellen für meine Auswertung, wie kann ich das Makro so abändern, dass nicht die komplette Zeile (26 Spalten), sondern nur 6 vordefinierte Zellen (6 Spalten) in meine Sheets übernommen werden?
Bin über jede Hilfe dankbar.
______________________________________________________________________________
Option Explicit

Private Sub cmdVerkListeErstellen_Click()
Dim rngQ As Range
Set rngQ = Worksheets("Ausgangstabelle").Columns(17)
Worksheets("Ausgangstabelle").Activate
rngQ.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Worksheets("Verkäuferliste").Columns(1), Unique:=True
Worksheets("Verkäuferliste").Activate
End Sub


Private Sub cmdProVerkaeufer_Click()
'filtern
Dim wbk As Workbook
Dim wksCrit As Worksheet
Dim wksDat As Worksheet
Dim wksFilt As Worksheet
Dim xLastCell&
Dim rngDat As Range
Dim rngCrit As Range
Dim rngFilt As Range
Dim xAbRowFilter&
Dim lngZeile&
Dim lngBisSpalte&
Dim lngBisZeile&
Set wbk = ThisWorkbook
Application.ScreenUpdating = False
Set wksCrit = wbk.Worksheets("Verkäuferliste")
Set wksDat = wbk.Worksheets("Ausgangstabelle")
lngBisSpalte = wksDat.Cells(1, Columns.Count).End(xlToLeft).Column
lngBisZeile = wksDat.Cells(Rows.Count, 17).End(xlUp).Row
wksCrit.Cells(1, 5).Value = wksCrit.Cells(1, 1).Value
For lngZeile = 2 To wksCrit.Cells(Rows.Count, 1).End(xlUp).Row
wksCrit.Cells(2, 5).Value = wksCrit.Cells(lngZeile, 1).Value
Set wksFilt = wbk.Worksheets.Add(After:=wbk.Worksheets(wbk.Worksheets.Count))
wksFilt.Name = wksCrit.Cells(lngZeile, 1).Text
Set rngCrit = wksCrit.Range(wksCrit.Cells(1, 5), wksCrit.Cells(2, 5))
Set rngDat = wksDat.Range(wksDat.Cells(1, 1), wksDat.Cells(lngBisZeile, lngBisSpalte))
Set rngFilt = wksFilt.Range(wksFilt.Cells(2, 1), wksFilt.Cells(Rows.Count, lngBisSpalte))
wksCrit.Activate
rngDat.AdvancedFilter xlFilterCopy, rngCrit, rngFilt
wksFilt.Activate
Next
wksFilt.Activate
Application.ScreenUpdating = True
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Makro, spalten automatisch löschen
26.08.2005 12:14:10
Ralf
Hallo MS Admin,
anbei ein Beispiel, wie Du die Spalten in Anzahl und Auswahl variabel auswählen lassen kannst.

Sub Machs()
Dim x%, sSp$
sSp = InputBox("Geben Sie durch Komma getrennt die Spalten ein, die Sie wählen möchten" & _
vbCrLf & "Bsp.: a,f,c")
For x = 1 To Len(sSp)
If Mid(sSp, x, 1) <> "," Then
MsgBox "Spalte " & Mid(sSp, x, 1) & " wurde gewählt"
'oder was immer Du in diesem Fall machen willst...
End If
Next x
End Sub

Ciao, Ralf
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Automatisches Löschen von Spalten in Excel mit Makros


Schritt-für-Schritt-Anleitung

Um ein Excel-Skript zu erstellen, das automatisch bestimmte Spalten löscht und nur die benötigten Daten in neue Sheets überträgt, folge diesen Schritten:

  1. Öffne Excel und lade die Arbeitsmappe, in der du arbeiten möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen > Modul.

  4. Kopiere und füge den folgenden Code in das Modul ein:

    Sub SpaltenLoeschenUndKopieren()
       Dim ws As Worksheet
       Dim rng As Range
       Dim i As Long
    
       Set ws = ThisWorkbook.Worksheets("Ausgangstabelle")
       Set rng = ws.Range("A1:Z150") ' Bereich anpassen
    
       ' Spezifische Spalten auswählen, die du behalten möchtest
       Dim spaltenBehalten As Variant
       spaltenBehalten = Array(1, 3, 5, 7, 9, 11) ' Beispiel für die Spalten A, C, E, G, I, K
    
       ' Durchlaufe alle Spalten
       For i = rng.Columns.Count To 1 Step -1
           If IsError(Application.Match(i, spaltenBehalten, 0)) Then
               rng.Columns(i).Delete
           End If
       Next i
    
       ' Weitere Logik zum Erstellen neuer Sheets
    End Sub
  5. Passe den Bereich (Range("A1:Z150")) und die Spaltenauswahl (spaltenBehalten) nach Bedarf an.

  6. Schließe den VBA-Editor und kehre zu Excel zurück.

  7. Führe das Makro aus: Drücke ALT + F8, wähle SpaltenLoeschenUndKopieren und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Sub oder Funktion nicht definiert."

    • Lösung: Stelle sicher, dass du das Makro im richtigen Modul eingetragen hast und die Schreibweise korrekt ist.
  • Fehler: "Bereich nicht gefunden."

    • Lösung: Überprüfe, ob der angegebene Bereich (z.B. "A1:Z150") in deinem Arbeitsblatt existiert.
  • Fehler: Das Makro löscht die falschen Spalten.

    • Lösung: Kontrolliere die spaltenBehalten-Array-Werte, um sicherzustellen, dass sie den richtigen Spaltennummern entsprechen.

Alternative Methoden

Eine weitere Möglichkeit, Spalten in Excel zu löschen, besteht darin, die Filterfunktion zu nutzen. Du kannst auch eine benutzerdefinierte Ansicht erstellen, die nur die relevanten Spalten anzeigt und die anderen versteckt. Diese Methode ist nützlich, wenn du die Daten später wieder benötigst, ohne sie permanent zu löschen.


Praktische Beispiele

Hier ist ein Beispiel, wie das oben aufgeführte Makro verwendet werden kann, um nur die Spalten A, C, E, G, I und K zu behalten:

Sub Beispiel()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("BeispielTabelle")

    ' Nur diese Spalten bleiben erhalten
    Dim spaltenBehalten As Variant
    spaltenBehalten = Array(1, 3, 5, 7, 9, 11)

    ' Führe die Löschoperation durch
    Call SpaltenLoeschenUndKopieren
End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden. Das hilft, Fehler zu vermeiden.
  • Speichere regelmäßig, während du an deinem Excel-Skript arbeitest, um Datenverluste zu verhindern.
  • Experimentiere mit Debug.Print, um Werte und Variablen während der Ausführung des Makros zu überprüfen.

FAQ: Häufige Fragen

1. Wie kann ich das Makro schneller machen?
Du kannst die Bildschirmaktualisierung mit Application.ScreenUpdating = False ausschalten, bevor das Makro läuft, und nach Beendigung wieder aktivieren. So läuft das Makro flüssiger.

2. Funktioniert das Makro in allen Excel-Versionen?
Das Skript ist mit Excel ab Version 2010 kompatibel. Neuere Versionen bieten zusätzliche Funktionen, die das Arbeiten mit Makros vereinfachen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige