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

Durch Komma getrennte Werte in Inputbox verarbeite

Durch Komma getrennte Werte in Inputbox verarbeite
22.05.2009 17:16:22
Patrick
Hallo,
ich hoffe mir kann einer bei meinem Problem Helfen.
Ich habe ein Excel-Sheet mit ca. 50000 Zeilen und 9 Spalten.
In Spalte C steht jeweils eine Nummer welche eine bestimmte Gruppe definiert( 1 - 127).
Da einige Gruppen gelösacht werden sollen wollte ich mir ein Makro schreiben mit dem ich mittels Inputbox
abfrage welche Gruppen gelöscht werden sollen.
Das hab ich für jeweils eine einzelne Gruppen auch hinbekommen.
Nun muss ich aber mehr als 20 Gruppen löschen und wollte es gern so machen das ich die zu löschenden
Gruppen, durch Komma getrennt, in die Inputbox eingebe und das Makro diese dann in einem Rutsch löscht.
Ich hab schon mehrere Sachen probiert aber nix hat funktioniert - was bestimmt nicht an Excel liegt :-(
Mein letzter Versuch war dieser hier:

Sub GruppenDel()
Dim x As Long
Dim Gruppe as String
Application.ScreenUpdating = False
Gruppe = InputBox("Zu löschende Gruppen durch ',' getrennt angeben.")
Sheets(1).Activate
Zeilen = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row  'letzte Zeile ermitteln
For x = Zeilen To 2 Step -1
Select Case Range("C" & x).Value
Case Gruppe
Rows(x).Delete Shift:=xlUp
End Select
Next x
Application.ScreenUpdating = True
End Sub


Dies ist glaube ich aber nicht der richtige Weg. Da hierbei ja nicht drauf geachtet wird ob nach dem Komma nun ein Leerzeichen kommt oder nicht. Ich könnt aber auch ohne diese Überprüfung leben und muss es mir nur merken.
Danke schonmal an der Stelle.
Gruss
Patrick

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Durch Komma getrennte Werte in Inputbox verarbeite
22.05.2009 17:27:06
Daniel
Hi
du könntest es so machen:

Sub GruppenDel()
Dim x As Long
Dim Gruppe as String
Application.ScreenUpdating = False
Gruppe = InputBox("Zu löschende Gruppen durch ',' getrennt angeben.")
Gruppe = "," & Gruppe & ","
Gruppe = Replace(Gruppe, " ", "")  'Leerzeichen entfernen
Sheets(1).Activate
Zeilen = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row  'letzte Zeile ermitteln
For x = Zeilen To 2 Step -1
if instr(Gruppe, "," & Cells(x,3) & ",") > 0 then Rows(x).Delete Shift:=xlup
Next x
Application.ScreenUpdating = True
End Sub


das Einfügen der Kommas am Anfang und am Ende hat den Sinn, daß wenn du "1" eingibst, nicht auch die Gruppen "12", "11", "10" usw gelöscht werden.
Gruß, Daniel

Anzeige
AW: Durch Komma getrennte Werte in Inputbox verarbeite
22.05.2009 17:34:45
Patrick
Hallo Daniel,
Danke für die prompte Antwort.
Genauso hab ich mir das Vorgestellt.
Funktioniert astrein.
THX
AW: Durch Komma getrennte Werte in Inputbox verarbeite
22.05.2009 17:31:12
Josef
Hallo Patrick,
' **********************************************************************
' Modul: Modul4 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub GruppenDel()
  Dim lngRow As Long, lngLast As Long, lngIndex As Long
  Dim Gruppe As String, varNum As Variant, rng As Range
  Application.ScreenUpdating = False
  
  Gruppe = InputBox("Zu löschende Gruppen durch ',' getrennt angeben.")
  If Gruppe = "" Then Exit Sub
  varNum = Split(Gruppe, ",")
  
  With Sheets(1)
    lngLast = .UsedRange.SpecialCells(xlCellTypeLastCell).Row 'letzte Zeile ermitteln
    
    For lngRow = 2 To lngLast
      For lngIndex = 0 To UBound(varNum)
        If .Cells(lngRow, 3).Value = varNum(lngIndex) Then
          If rng Is Nothing Then
            Set rng = .Rows(lngRow)
          Else
            Set rng = Union(rng, .Rows(lngRow))
          End If
        End If
      Next
    Next
    
  End With
  
  If Not rng Is Nothing Then rng.Delete
  
  Application.ScreenUpdating = True
  
End Sub

Gruß Sepp

Anzeige
AW: Durch Komma getrennte Werte in Inputbox verarbeite
22.05.2009 17:40:17
Patrick
Danke auch an dich Sepp.
Funktioniert auch :-)
THX THX
AW: Durch Komma getrennte Werte in Inputbox verarbeite
22.05.2009 17:36:48
Gerd
Hallo Patrick,
ich würde eine Listbox nehmen.
Gruß Gerd
AW: Durch Komma getrennte Werte in Inputbox verarbeite
22.05.2009 17:48:48
Tino
Hallo,
ich habe auch noch eine Version, diese verwendet zwei Hilfspalte am Ende, diese werden wieder gelöscht.
Sub Test()
Dim strString As String
Dim Bereich As Range, SortBereich As Range
Dim LCol As Long
Dim iCalc As Integer

With Application
  iCalc = .Calculation
 .ScreenUpdating = False
 .EnableEvents = False
 .Calculation = xlCalculationManual
    
    'Bereich anpassen, hier Spalte 1 ab A2 (ohne Überschrift) 
    Set Bereich = Range("A2", Cells(Rows.Count, 1).End(xlUp))
    
    'Inputbox Daten mit Komma getrennt eingeben ohne Leerzeichen dazwischen 
    'Beispiel Hans,Mayer,Fritz 
    strString = InputBox("Zu löschende Gruppen durch ',' getrennt angeben.")
    
    If Right$(strString, 1) <> "," Then strString = strString & ","
    
    
    LCol = Bereich.Column
    Set Bereich = Bereich.Offset(0, Columns.Count - LCol)
    Set SortBereich = Bereich.Offset(0, -1)
    
    SortBereich.FormulaR1C1 = "=ROW()"
    Bereich.FormulaR1C1 = "=IF(ISERROR(FIND(RC" & LCol & "&"","",""" & strString & """)),"""",0)"

    If .WorksheetFunction.CountIf(Bereich, 0) > 0 Then
     Range("A2", Cells(Rows.Count, Columns.Count)).Sort Bereich(1, 1), xlAscending, , , , , , xlNo
     Bereich.SpecialCells(xlCellTypeFormulas, 1).EntireRow.Delete
     Range("A2", Cells(Rows.Count, Columns.Count)).Sort SortBereich(1, 1), xlAscending, , , , , , xlNo
    End If
   
    Columns(Columns.Count).Delete
    Columns(Columns.Count - 1).Delete
 
 .Calculation = iCalc
 .ScreenUpdating = True
 .EnableEvents = True
End With

End Sub


Gruß Tino

Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige