Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: Suchen makieren
von: walli
Geschrieben am: 26.01.2010 13:22:58
Hallo Allerseits,
ich suche eine Möglichkeit einen Bereich zu suchen und evtl. auch zu löschen.
In meiner Tabelle steht in der Spalte BA(53) durch eine Formel bedingt ein "1".
Wo die 1 anfängt, sollte ermittelt werden und der Bereich bis zum Ende der Tabelle
DAS ENDE ist durch die Spalte "A" zu erreichen, die lf. Nummer steht da,
makiert werden.
Für mein anderes Makro müßte ich diesen Bereich dann löschen.
Wenn keine 1 zu finden ist sollte eine Hinweis kommen,
danke im Voraus.
mfg walli
Betrifft: AW: Suchen makieren
von: fcs
Geschrieben am: 26.01.2010 15:24:44
Hallo walli,
etwa so
Gruß
Franz
Sub BereichLoeschen() Dim Zeile As Long, Zelle As Range Dim wks As Worksheet Set wks = ActiveSheet Application.ScreenUpdating = False With wks ' letze Zeile Spalte A Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row '1 in Spalte BA suchen Set Zelle = .Columns(53).Find(what:=1, LookIn:=xlValues, lookat:=xlWhole) If Zelle Is Nothing Then MsgBox "Keine 1 in Spalte BA", vbInformation + vbOKOnly, "Löschen Bereich" Else If Zeile >= Zelle.Row Then .Range(.Rows(Zelle.Row), .Rows(Zeile)).ClearContents Else .Rows(Zelle.Row).ClearContents End If End If End With Application.ScreenUpdating = True End Sub
Betrifft: Sorry
von: walli
Geschrieben am: 26.01.2010 19:49:57
Guten Abend Franz,
es soll nur bis Spalte 53 gelöscht werden.
mfg walli
Betrifft: AW: Sorry
von: fcs
Geschrieben am: 27.01.2010 00:53:12
Hallo walli,
dann muss du den folgenden Abschnitt in dem gelöscht wird anpassen.
If Zeile >= Zelle.Row Then .Range(.Cells(Zelle.Row, 1), .Cells(Zeile, 53)).ClearContents Else .Range(.Cells(Zelle.Row, 1), .Cells(Zelle.Row, 53)).ClearContents End If
Betrifft: Warum ...
von: walli
Geschrieben am: 27.01.2010 09:52:11
Guten Morgen Franz,
Warum steht eigentlich die löscht Zeile 2x drin ?
mfg walli
Betrifft: AW: Warum ...
von: fcs
Geschrieben am: 27.01.2010 11:21:51
Hallo walli,
ich kenne ja deine Tabelle und ihre Daten nicht, wenn das Makro gestartet wird.
Dies ist eine Absicherung für den Fall, dass die letzte Zeile mit Daten in Spalte A oberhalb der Zeile ist, in der in Spalte 53 die 1 gefunden wird.
Beispiel:
LetzteZeile mit Daten in Spalte A = 10, 1 in Spalte 53 in Zeile 15
Ohne Prüfung der Zeilennummer und die 2. Löschanweisung
würden die Inhalte im Bereich Range(Cells(10,1),cells(15,53)) gelöscht.
Mit Prüfung wird die 2. Löschanweisung wirksam und es wird hier nur der Inhalt in
Range(Cells(15,1),cells(15,53)) gelöscht.
Ob das bei deinen Daten relevant ist oder nicht weiss ich nicht. Jedenfalls werden so nicht versehentlich Daten gelöscht.
Gruß
Franz
Betrifft: Danke für --))
von: walli
Geschrieben am: 27.01.2010 14:52:20
Hallo Franz,
herzlichen Dank für die Erklärung,
schönen Tag noch,
mfg walli