PDA

Vollständige Version anzeigen : Inhalt der letzten gefüllten Zeile in Tabelle löschen - VBA


Lisseli
01.07.2014, 08:15
Hallo ihr Lieben,

ich benötige mal eure Hilfe, in diversen Foren habe ich leider keine passende Antwort gefunden.

Ich habe eine Tabelle die ich über einen Button mit diversen Datensätzen fülle.
Die komplette Tabelle löschen habe ich rausgefunden.

Sub Tabelleninhalt_leeren()
Range("AG19:AZ23").ClearContents
End Sub

Aber wie bekomme ich es hin, dass nur der Inhalt der letzten gefüllten Zeile gelöscht wird der Tabelle in AG19:AZ23 ??? Also z.B: AG22:AZ22.

Also wenn man z.B. gemerkt hat, man hat einen fehler gemacht, aber will nicht gleich die komplette Tabelle löschen.

Über eure Hilfe wäre ich sehr dankbar!!!!:)

Liebe Grüße

Lisseli

Beverly
01.07.2014, 08:47
Hi,

versuche es so:

Dim lngLetzte As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, "AG")), Cells(Rows.Count, "AG").End(xlUp).Row, Rows.Count)
Range(Cells(lngLetzte, "AG"), Cells(lngLetzte, "AZ")).ClearComments


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Lisseli
01.07.2014, 09:10
Hmm...da tut sich irgendwie gar nichts??? :(

Beverly
01.07.2014, 09:18
Keine Ahnung - bei mir tut der Code was er tun soll. Möglicherweise ist deine Spalte AG, aus der die letzte belegte Zeile ermittelt wird, nicht bis zu letzten Zeile gefüllt und du musst eine andere Spalte dafür verwenden - aber dazu kann ich nichts sagen, da ich deine Mappe nicht kenne.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Mc Santa
01.07.2014, 09:20
Ich denke hier ist ein kleiner Tippfehler ;)

Dim lngLetzte As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, "AG")), Cells(Rows.Count, "AG").End(xlUp).Row, Rows.Count)
Range(Cells(lngLetzte, "AG"), Cells(lngLetzte, "AZ")).ClearContents 'zuvor Comments

Lisseli
01.07.2014, 09:47
Hallo,

vielen Dank euch schon einmal.

Mit dem geänderten Code von MC Santa löscht es auf einmal die Spaltenüberschrift in Zeile 18....hmmm???

Das Dokument ist so aufgebaut, dass überhalb und unterhalb der Tabelle Text steht, d.h. es müßte wirklich nur in den Bereich AG19:AZ23 geschaut werden, wo die letzte befüllte Zeile ist.

Kann man das einschränken? Könnte mir vorstellen, wenn im kompletten Dokement AG durchsucht wird, könnten Probleme auftretten, da dies ja mal mehr mal weniger befüllt ist. Es sollte sich also wirklich auf den o.g. Bereich beschränkt werden.

Sorry für meine Unkenntnis :eek:

Lieben Dank

Lisseli

Beverly
01.07.2014, 10:09
Hi,

ist das eine eingefügte Tabelle? Kann auch in einer anderen Spalte als AG etwas stehen?

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Beverly
01.07.2014, 10:23
Hi,

wenn es tatsächlich nur um diesen Bereich geht, dann versuche es mal so:

Dim lngLetzte As Long
lngLetzte = Range("AG19:AG23").SpecialCells(xlCellTypeLastCell).Row
Range(Cells(lngLetzte, "AG"), Cells(lngLetzte, "AZ")).ClearContents


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Lisseli
01.07.2014, 12:31
Hallo,

in meiner Tabelle funktioniert es leider nicht, aber in ner Testdatei schon...komisch...liegt wohl an dem Dokument.

Andere Idee:

Wenn ich hinter die 5 Zeilen ein Kontrollkästchen mache wo ich die zu löschenden Zeilen anklicken kann, wäre das fast noch besser.

Bloß wie geht das, dass bei Aktivierung über einen Button der Inhalt gelöscht wird???

Hab jetzt hinter jeder Zeile ein Kästchen hinterlegt mit bspw:

Range("AG19:AZ19").ClearContents

Aber das ist ja nicht die Lösung. Wie kann ich das zusammenfassen, dass ich auch mehrere auswählen kann.

Tausend Dank für eure Geduld,

liebe grüße

Lisseli

Beverly
01.07.2014, 13:45
Hi,

ich mache dir einen anderen Vorschlag: benutze das Doppelklick-Ereignis des Tabellenblattes im bereich AG10:AZ23:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("AG19:AZ23")) Is Nothing Then
Cancel = True
Range(Cells(Target.Row, "AG"), Cells(Target.Row, "AZ")).ClearContents
End If
End Sub


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Lisseli
01.07.2014, 14:28
Hi,

ja, das ist auch eine Möglichkeit. Aber für die breite Masse wäre mir dies mit den Häkchen im Kontrollkästen und der Löschfunktion lieber.

Es sollen später auch Kollegen dieses Dokument nutzen und ich denke mit dem Häkchen ist es verständlicher....

Sorry....

Hast du eine Idee wie das geht?

Danke dir!!!!!!!!!

Lisseli

Beverly
01.07.2014, 15:53
Hi,

wie das mit den CheckBoxen geht, weiß ich, aber ich weiß nicht, welche Art von CheckBoxen du verwenden willst - ActiveX-Steuerlemente oder Formular-Steuerelemente.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Lisseli
02.07.2014, 06:58
Guten Morgen,

ich nutze ActiveX-Steuerelemente.

LG

Lisseli

Beverly
02.07.2014, 09:20
Hi,

hier der Coder für die erste CheckBox:

Private Sub CheckBox1_Click()
If CheckBox1 Then Range("AG19:AZ19").ClearContents
End Sub


Den selben Code musst du auch für die anderen CheckBoxen benutzen - dort natürlich den Zellbereich (und die CheckBox-Nr.) entsprechend anpassen.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Lisseli
02.07.2014, 10:49
Hallo Beverly,

vielen Dank für deine Hilfe!!!

So wird nun bei Klick auf die Checkbox die Zeile gelöscht. Am liebsten wäre es mir aber wenn man erst anklickt (Häkchen rein) und dann auf einen Button die ausgewählten Zeilen löschen kann.

So könnte man evtl. auch mehrere löschen.

Habs mal so, aber funktioniert natürlich nicht. Aber vielleicht erkennst du daran besser, wie ich es meine. Kannst du mir bei dem Code noch mal entsprechend helfen?

Sub Ausgewählte_Zeile_löschen()
If CheckBox1 Then Range("AG19:AZ19").ClearContents
If CheckBox2 Then Range("AG20:AZ20").ClearContents
If CheckBox3 Then Range("AG21:AZ21").ClearContents
If CheckBox4 Then Range("AG22:AZ22").ClearContents
If CheckBox5 Then Range("AG23:AZ23").ClearContents
End Sub

Tausend dank,

Lisseli