Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1728to1732
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

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

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 &. ;-)


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige