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

Forumthread: VBA: Range Bereich festlegen

VBA: Range Bereich festlegen
15.12.2019 01:34:05
Charly
Hallo
Habe einen Code via Google gefunden den Ich gern nutzen möchte.
Zum Code Selbst:
- Über eine InputBox wird ein "Wert" im Tabellenblatt gesucht
- Lösche ganze Zeile
Hier das Original Makro:
Option Explicit
Const Titel = "Zeilen Löschen mit Wert"
Const Msg = "Wert, nachdem gesucht und gelöscht werden soll."
Sub DelFoundLines()
Workbooks("HM2030_RO_").Worksheets("RO").Activate
Dim i As Long           ' Zeilenzähler
Dim tofind As Variant   ' Hiernach wird gesucht
Dim found As Range      ' Eine Fundstelle oder Nothing
tofind = InputBox(prompt:=Msg, Title:=Titel)
If tofind = "" Then Exit Sub
Application.ScreenUpdating = False
For i = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row _
To 1 Step -1
Set found = Rows(i).Find(what:=tofind, _
LookIn:=xlValues, lookat:=xlWhole)
If Not found Is Nothing Then Rows(i).Delete
Next
Application.ScreenUpdating = True
End Sub

' Quelle: https://www.online-excel.de/excel/singsel_vba.php?f=30
Mit kleinen Änderungen Klapt es teilweise:

Sub DelFoundLines()
Workbooks("HM2030_RO_").Worksheets("RO").Activate
Dim i As Long           ' Zeilenzähler
Dim tofind As Variant   ' Hiernach wird gesucht
Dim found As Range      ' Eine Fundstelle oder Nothing
tofind = UF2_ID_Auslagern.CB_ID_RO
If tofind = "" Then Exit Sub
Application.ScreenUpdating = False
For i = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row _
To 1 Step -1
Set found = Rows(i).Find(what:=tofind, _
LookIn:=xlValues, lookat:=xlWhole)
If Not found Is Nothing Then Rows(i).ClearContents
Next
Application.ScreenUpdating = True
End Sub
Wie kann Ich das Makro so abändern das statt die ganze Zeile Gelöscht wird nur Bestimmte Spalten.
Bsp:
- Suche "Wert" in Spalte "C:C" > Auswahl des "Wertes" über die ComboBox "CB_ID_RO"
- Lösche im Bereich ("D:BP") alle Zellinhalte (ohne Formatierung) in der jeweiligen Zeile

Gruß Charly
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Range Bereich festlegen
15.12.2019 07:56:06
Hajo_Zi
Hallo Charly,
soll tatsächlich der Bereich gelöscht werden und die nachfolgenden Zelle aufrücken?
Range("D" & I $ ":BP" & I).delete

AW: VBA: Range Bereich festlegen
15.12.2019 12:42:10
Charly
Hallo Hajo
Wie füge Ich deinen Code in das Makro ein?
Gruß Charly
AW: VBA: Range Bereich festlegen
15.12.2019 13:02:00
Werner
Hallo,
die Frage hast du jetzt nicht wirklich beantwortet.
Soll gelöscht werden oder nur der Inhalt der Zellen entfernt werden.
Nach deiner Beschreibung gehe ich davon aus, dass nur der Inhalt geleert werden soll.
Hier ein Code der das mit dem Autofilter erledigt - dürfte auf alle Fälle schneller sein als mit einer Schleife über die Zeilen.
Ich bin von folgenden Voraussetzungen ausgegeangen:
-Daten beginnen in A1 und sind in den Spalten ohne Lücken
-In Zeile 1 sind Überschriften, die eigentlichen Daten beginnen erst in Zeile 2
-Die letzte belegte Zeile habe ich in Spalte A ermittelt
Teste mal:
Sub Makro1()
Dim loLetzte As Long, loSpalte As Long
Application.ScreenUpdating = False
If UF2_ID_Auslagern.CB_ID_RO.ListIndex > -1 Then
With Worksheets("RO")
If WorksheetFunction.CountIf(.Columns("C"), UF2_ID_Auslagern.CB_ID_RO) > 0 Then
loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Row
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
.Cells(1, 1).AutoFilter
.Range(.Cells(1, 1), .Cells(loLetzte, loSpalte)).AutoFilter Field:=3, _
Criteria1:=UF2_ID_Auslagern.CB_ID_RO
With .AutoFilter.Range
.Offset(1).Resize(.Rows.Count - 1).Columns("D:BP").ClearContents
End With
.Range("A1").AutoFilter
Else
MsgBox "Suchbegriff nicht vorhanden."
End If
End With
Else
MsgBox "Fehler: Es ist kein Wert ausgewählt."
End If
End Sub

Gruß Werner
Anzeige
AW: VBA: Range Bereich festlegen
15.12.2019 14:44:53
Beverly
Hi Charly,
in deinem Code anstelle Rows(i).Delete dieses: Range("D" & i $ ":BP" & i).ClearContents


AW: VBA: Range Bereich festlegen, GELÖST
15.12.2019 23:08:53
Charly
Hallo Hajo, Werner, Beverly,
danke für eure Antworten.
Mit der Lösung von Hajo u. die Erläuterung von Beverly hat es geklappt,
aller Dings mit einer kleinen Änderung.
Da ein Fehler beim Kompilieren auftrat (Ungültiges Zeichen "$"),
dies hab ich wie folgt gelöst: Range("D" & i & ":BP" & i).ClearContents
Danke auch an Werner, werd deine Lösung im Hinterkopf behalten.
Gruß Charly
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
16.12.2019 06:25:08
Werner
Danke für die Rückmeldung...
16.12.2019 08:38:16
Beverly
Hi Charly,
...und schön dass du selbst den Fehler gefunden hast - war halt einfach nur die falsche Taste, denn $ liegt ja auf der Tastatur nicht weit vom Verbindungs-Operator &. ;-)


;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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