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

VBA - Bereich eingrenzen
27.09.2016 07:59:09
Berndt
Hallo Freunde,
kann mir jmd bei der eingrenzung eines Bereiches helfen.
Das Problem: Alles ist dynamisch. Nur die Spaltenköpfe sind beständig.
Im Bsp. sollte es mir mittels Code den rot markierten Bereich z.B. löschen können.
Set WSd = ThisWorkbook.Worksheets("test")
With WSd.Range(WSd.Cells(..., ...), WSd.Cells(..., ...)) '
.Clear
End With
https://www.herber.de/bbs/user/108430.xlsx
so ähnlich sollte es ja sein, oder?
Vielen Dank schon mal.
Berndt

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Bereich eingrenzen
27.09.2016 09:02:58
kultnoob
Hi Berndt,
teste mal bitte folgendes. Hab ich kurz mal runtergeschrieben.

Option Explicit
Sub test()
Dim a, b, c, d As Integer
Dim lrow As Integer
Set a = ActiveWorkbook.Sheets(1)
lrow = a.UsedRange.SpecialCells(xlCellTypeLastCell).Row
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' _
'Bestimmen, ab wann die Tabelle beginnt --> Im Beispiel eine Zeile nach dem Zellenwert  _
Namen'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' _
For b = 1 To lrow
'Suche in Spalte B nach der ersten Zelle, wo ein roter linker Rahmen enthalten ist
If a.Cells(b, 2).Borders(xlEdgeLeft).Color = RGB(255, 0, 0) Then
'Wenn Zelle gefunden, übergib den Wert der Variable B an die Variable C -->  _
Start der Tabelle
c = b
Exit For
End If
Next b
'Größe der Tabelle bestimmen'
For b = 1 To lrow
'Prüfen, ob in der Zelle in Spalte B die Linke Seite der Zelle rot markiert ist
If a.Cells(b, 2).Borders(xlEdgeLeft).Color = RGB(255, 0, 0) Then
'Falls ja, wird die Zeile der Variable C übergeben --> Somit kann die Range spä _
ter bestimmt werden
d = b
End If
Next b
'Bereich löschen'
a.Range(a.Cells(c, 2), a.Cells(d, 14)).ClearContents
End Sub
Zuerst schaue ich, wo die Tabelle beginnt - Spalte B (Erster Roter Rahmen links)
Danach schaue ich, wo der letzte Rahmen links ist - Spalte B
Dann habe ich erste und letzte Zeile der Tabelle. Da die Überschriften gleich bleiben, weiß ich, wie viele Spalten verwendet werden.
Passt das so?
Gruß
Anzeige
AW: VBA - Bereich eingrenzen
27.09.2016 09:04:03
kultnoob
Ach das ganze in ein Modul... Hab ich vergessen zu erwähnen... :D
AW: VBA - Bereich eingrenzen
27.09.2016 10:05:05
Berndt
Vielen Dank für deine Mühe. Allerdings soll der rote Rahmen nur symbolisch erscheinen.
habe statt RGB(255, 0, 0) aber einfach RGB(0, 0, 0) geschrieben.
Ich habe mich wahrscheinlich etwas falsch ausgedrückt.
Ich wollte für den ermittelten Bereich nicht nur .ClearContents, sondern direkt den Bereich + Bereich Spalte O gelöscht haben.
Sprich es sollte mir den Bereich in dem Falle B26:O58 löschen.
AW: VBA - Bereich eingrenzen
27.09.2016 09:29:42
Werner
Hallo Berndt,
ich vermute mal, der rote Rahmen in der Datei ist nur zur Verdeutlichung um welchen Bereich es sich handelt und der ist in deiner Arbeitsdatei nicht vorhanden.
Public Sub Zellen_leeren()
Const strSuchbegriff As String = "Name"
Const strSuchbegriff1 As String = "Themenspeicher Woche"
Dim rngFund As Range
Dim rngFund1 As Range
Dim loSpalte As Long
Set rngFund = Sheets("Test").Columns(2).Find(strSuchbegriff, LookIn:=xlValues, Lookat:= _
xlPart)
Set rngFund1 = Sheets("Test").Columns(2).Find(strSuchbegriff1, LookIn:=xlValues, Lookat:= _
xlPart)
If Not rngFund Is Nothing And Not rngFund1 Is Nothing Then
loSpalte = Sheets("Test").Cells(rngFund.Row, Columns.Count).End(xlToLeft).Column
With Sheets("Test")
.Range(.Cells(rngFund.Row + 1, 2), .Cells(rngFund1.Row - 4, loSpalte)).ClearContents
End With
End If
Set rngFund = Nothing
Set rngFund1 = Nothing
End Sub
Guß Werner
Anzeige
AW: VBA - Bereich eingrenzen
27.09.2016 09:33:26
Werner
Hallo Berndt,
was ich noch vergessen habe:
Ich bin davon ausgegangen, dass zwischen dem Ende des Bereiches "Name/Status" und des Bereiches "Themenspeicher Woche" immer 3 Leerzeilen sind.
Gruß Werner
AW: VBA - Bereich eingrenzen
27.09.2016 09:33:52
kultnoob
Hi,
ja wenn der Rahmen nicht mehr vorhanden ist, dann geht mein Beispiel nicht mehr...
Dann finde ich die Lösung über die Zellen "Name" und "Themenspeicher der Woche" sinnvoller...
Gruß
AW: VBA - Bereich eingrenzen
27.09.2016 10:06:58
Berndt
Vielen Dank für eure Mühe. Allerdings soll der rote Rahmen wirklich nur symbolisch erscheinen.
habe statt RGB(255, 0, 0) aber einfach RGB(0, 0, 0) geschrieben.
Aber der Weg über suche ist bald noch besser, wie ich finde.
Ich habe mich wahrscheinlich etwas falsch ausgedrückt.
Ich wollte für den ermittelten Bereich nicht nur .ClearContents, sondern direkt den Bereich + Bereich Spalte O gelöscht haben.
Sprich es sollte mir den Bereich in dem Falle B26:O58 löschen.
Anzeige
AW: VBA - Bereich eingrenzen
27.09.2016 10:16:32
Werner
Hallo Berndt,
also da verstehe ich jetzt das Problem nicht. Wenn du löschen willst dann halt .Delete anstatt .ClearContents.
Und wenn eine weitere Spalte mit betroffen ist dann:
.Range(.Cells(rngFund.Row + 1, 2), .Cells(rngFund1.Row - 4, loSpalte + 1)).Delete
Gruß Werner
AW: VBA - Bereich eingrenzen
27.09.2016 10:32:36
Berndt
Ich danke vielmals. funktioniert gut mit eurer Hilfe.
Das Problem mit den dynamischen Bereichen scheint sich nun für mich erledigt zu haben.
AW: Gerne u. Danke für die Rückmeldung. o.w.T
27.09.2016 10:40:36
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige