Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
956to960
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
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

auch leere Zeile löschen Code vervollständigen

auch leere Zeile löschen Code vervollständigen
09.03.2008 15:35:31
Fred
Hallo zusammen
Ich habe ein Problem und weis nicht wie ich es lösen soll. Über einen Button kann ich eine bestimmte Zeile Löschen. Das funzt auch prima, leider habe ich festgestellt, das ich auch ab und zu mal eine Leere Zeile Löschen muss. Das bin ich bis jetzt immer umgangen mit :On Error Resume Next( siehe Code unten). Da das löschen nur funktioniert wenn etwas in der Zeile steht. Leider weiss ich nicht, wie ich es anstellen kann das auch gelöscht wird, wenn die Zeile leer ist. Natürlich sollte der Bereich den ich vorgegeben habe eingehalten werden. Der beginnt von A4 bis M4 abwerts siehe Unten stehenden Code
bin für jede Hilfe dankbar.
Grüße Fred
hier mal der kommplette Code

Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
Dim Blatt As Long
For Blatt = 1 To ActiveWorkbook.Sheets.Count
ActiveWorkbook.Sheets(Blatt).Unprotect Password:="Bertelsmann1969"
Next Blatt
Dim vntReturn As Variant
Do
vntReturn = InputBox("Zu löschende Zeilen Nummer eingeben AUßER ZEILE" & _
" 1 BIS 3 diese sind nicht löschbar")
If StrPtr(vntReturn) = 0 Then Exit Sub 'Abbrechen gedrückt
If IsNumeric(vntReturn) Then
vntReturn = CDec(vntReturn)
If Fix(vntReturn) = vntReturn Then
If vntReturn  Rows.Count Then
MsgBox "Nur Zahlen von 4 bis " & CStr(Worksheets(1).Rows.Count) & _
" erlaubt.", vbExclamation, "Hinweis"
Else
Exit Do
End If
Else
MsgBox "Nur ganze Zahlen erlaubt", vbExclamation, "Hinweis"
End If
Else
MsgBox "Nur Zahlen erlaubt.", vbExclamation, "Hinweis"
End If
Loop
On Error Resume Next
Range(Cells(vntReturn, 1), Cells(vntReturn, 13)).SpecialCells(xlCellTypeConstants). _
ClearContents
On Error GoTo 0
SuperKopieren
For Blatt = 1 To ActiveWorkbook.Sheets.Count
ActiveWorkbook.Sheets(Blatt).Protect Password:="Bertelsmann1969", DrawingObjects:=True,  _
Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Next Blatt
Application.ScreenUpdating = True
End Sub


19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 16:10:09
Gerd
Guten Tag Fred!
On Error Resume Next
Range(Cells(vntReturn, 1), Cells(vntReturn, 13)).SpecialCells(xlCellTypeConstants). _
ClearContents
On Error GoTo 0
...macht die Zellen nur leer.
Leere Zeilen löschen. Was meinst Du damit ?
Eine ganze Zeile löschen, wenn Bereich A&Zeile:M&Zeile leer ist
oder:
Nur die Zellen des Bereichs Bereich A&Zeile:M&Zeile löschen, wenn dieser Bereich leer ist
(dann verschiebt sich die Sache)
Gruß Gerd

AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 16:10:00
Daniel
Hi
sorry, ich verstehe das Problem nicht.
Wenn die Zellen leer sind, brauchst du sie doch auch nicht zu löschen, somit ist die von dir angewandte Methode schon korrekt.
Gruß, Daniel

Anzeige
AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 16:25:15
Fred
Hallo zusammen
Also ich befülle die Zeilen über Text und Comboboxen und manchmal ist halt eine Leere Zeile zwischen den gefüllten.
Beispiel
A4 bis M4 ist gefüllt dann A5 bis M5 leer und A6 bis M6 wieder gefüllt. und über den Button gebe ich jetzt eine Zahl ein, also 5 ( für A5 bis M5) und möchte diese Lerrzellen jetzt löschen.
Ich hoffe das war verständlich
Grüße fred

AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 16:39:38
Gerd
Hallo Fred,
meinst Du so ? (auf die Schnelle ungetestet)
On Error Resume Next
If WorksheetFunction.CountA(Range(Cells(vntReturn, 1), Cells(vntReturn, 13))) = 0 Then
Range(Cells(vntReturn, 1), Cells(vntReturn, 13)).Delete
Else
Range(Cells(vntReturn, 1), Cells(vntReturn, 13)).SpecialCells(xlCellTypeConstants). _
ClearContents
End If
On Error GoTo 0
Gruß Gerd

Anzeige
AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 16:51:00
Fred
Hallo Gerd
So in der Art, funktioniert leider nicht die Zeilen werden nicht gelöscht
Grüße Fred

AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 17:10:22
Daniel
Hi
mal ne blöde Frage, enthalten alle 13 Spalten nur feste Werte oder können auch Formeln drinstehen, die aber erhalten bleiben sollen?
Die Zeile
Range(Cells(vntReturn, 1), Cells(vntReturn, 13)).SpecialCells(xlCellTypeConstants). ClearContents
würde nur unter dieser Bedingung sinnvoll sein, hätte aber zur folge, daß es etwas aufwendiger wird, zu ermitteln, ob alle eingabefelder leer sind und die Zellen gelöscht werden können.
lade doch mal ne Beispieldatei mit deinen Daten hoch.
Gruß, Daniel

Anzeige
AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 17:37:00
Fred
Hallo nochmal
Ich habe mal die Mappe hochgeladen. Und schon mal eine Leerzeile erzeugt, diese entsteht nur wenn mann die Störkennziffer 09/19 eingiebt.
Oben in der UF ist der Button Zeile eingeben und Löschen.
Also als Beispiel soll die Zeile 7 jetzt gelöscht werden
Ich hoffe jetzt wird es fr Euch verständlicher
Grüße Fred
https://www.herber.de/bbs/user/50591.zip

AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 17:23:00
Gerd
Hallo Fred,
leere Bereiche A:M auch nicht ?
Gruß Gerd

AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 17:31:00
Fred
Nein wird nichts gelöscht.
Ich versuche gerade eine Mappe hoch zu laden, aber irgendwie sagt der mir immer Falsches Format, obwohl das ein zip File ist
Grüße

Anzeige
AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 18:00:56
Daniel
Hi
kann ja auch nicht, denn in Spalte C steht ja ne Formel drin, die verhindert, das COUNTA den Wert 0 annehemen kann.
du müsstest freds Code so abändern, dann sollte es funktionieren:

On Error Resume Next
If WorksheetFunction.CountA(Range(Cells(vntReturn, 1), Cells(vntReturn, 13)))  Then
Range(Cells(vntReturn, 1), Cells(vntReturn, 13)).entirerow.Delete
Else
Range(Cells(vntReturn, 1), Cells(vntReturn, 13)).SpecialCells(xlCellTypeConstants). _
ClearContents
End If
On Error GoTo 0


funktionsweise ist jetzt so:
- besteht in Spalte A-M der gewählten Zeile ein Eintrag, so werden diese Zellen geleert
- sind alle Zellen der Spalten A-M der gewählten Zeile leer, so wird die gesamte Zeile gelöscht.
dabei wird die Spalte C nicht berücksichtigt.
btw, da der Fehler jetzt abgefangen wird und die Zeile mit SpecialCells nur dann angesteuert wird, wenn ein zu löschender Eintrag vorhanden ist, müsste der Code ohne On Error Resume next auskommen.
Gruß, Daniel
Gruß, Daniel

Anzeige
AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 18:15:00
Fred
Hallo Daniel
Vielen Dank erstmal für Deine Mühe. Dein Code funktioniert soweit schon, leider wird die ganze Zeile gelösch und nicht nur bis Bereich (M). Und Ich musste die Funktion auch immer 2x starten bis das Ergebnis eingetreten ist. Beim ersten mal Löschen passierte nichts.
Grüße Fred

AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 19:01:00
Daniel
Hi
wenn du du nur den Zellbereich löschen willst, dann musst du halt

Range().Delete Shift:=xlup


verwenden anstelle von


Range().EntireRow.Delete


zum doppelt Eingeben-Problem.
das ist genauso umgesetzt, wie ich deine Aufgabenstellung interpretiert habe:
wenn in der Zeile ein Eintrag vorhanden ist, dann werden die Zellen nur geleert und nicht gelöscht (so war es auch ursprünglich von dir programmiert (ClearContents), das habe ich auch so beibehalten.
erst wenn kein Eintrag vorhanden ist, wird die Zeile gelöscht.
da keine Funktion der Welt herausfinden kann, ob du jetzt eine Zeile mit Daten nur leeren oder löschen willst, musst du zum Löschen einer befüllten Zeile halt das Makro 2x aufrufen.
wenn sofort gelöscht werden soll, dann musst du es halt umprogrammieren.
dabei kannst du dann auf die IF-Abfrage verzichten und gleich den Code für das Löschen der Zellen hinschreiben.
Gruß, Daniel

Anzeige
AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 18:45:37
Gerd
Hallo Fred,
Die Zelle G7 ist nicht leer, nur optisch, die Zelle C20 beipielsweise ebenfalls nicht.
Ich habe aber keine Lust herauszufinden, ob dies per Code bedingt so ist oder
vom Zusammenbastellen des Vordruckmusters etc. stammt.
Gruß Gerd

AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 18:53:00
Fred
Hallo Daniel
Die Zelle G7 ist deshalb nicht leer, weil ich die Daten an die Zellen aus einer UF mit mehreren Textboxen übergebe, und in der letzten textbox kein Text enthalten war, deshalb ist Sie zwar optisch leer, so wie Du es richtig festgestellt hast. Deshalb möchte ich ja dann auch den Bereich A7 bis M7 löschen, damit er wieder leer ist.
trotzdem vielen dank für Deine Mühe
Fred

Anzeige
AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 19:17:00
Fred
offen

AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 19:19:35
Gerd
Hi Fred,

Die Zelle G7 ist deshalb nicht leer, weil ich die Daten an die Zellen aus einer UF mit mehreren Textboxen übergebe und in der letzten textbox kein Text enthalten war


Da gibt es schon Möglichkeiten, die Sache "vorher" so zu steuern, dass bei
Worksheetfunction.CountA(Range(Cells(varReturn,1),Cells(varReturn,13)) etwas Schlüssiges herauskommt u. nur die Formel in Spalte C und echte Einträge gezählt werden.
Freies Kurzbeispiel: If TextBox5.Text = "" then Range("G7").ClearContents
Gruß Gerd

Anzeige
AW: auch leere Zeile löschen Code vervollständigen
09.03.2008 19:29:33
Fred
Hallo Gerd
Giebt es da nicht eine Möglichkeit, den Code so abzuändern, das die Textbox die dafür verantwortlich ist, nur etwas in die Zelle schreibt, wenn auch Text drin steht, ansonsten die Textbox einfach ignorriert wird?
Grüße Fred
Mit dem Code befülle ich die Zelle

Private Sub CommandButton2_Click()
Dim AZ As Range
If [G3] = "" Then
Set AZ = [G3]
Else
Set AZ = Cells(Rows.Count, 7).End(xlUp).Offset(2, 0)
End If
AZ = TextBox1
With AZ
.Offset(0, 1) = ComboBox1 & ComboBox2 & ComboBox3 & ComboBox5 & ComboBox4 & ComboBox6
'Columns("A:N").AutoFit
End With
----------------------------füllt die Celle -G--
Dim iRow As Long, strT As String
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 2
strT = Cells(iRow, 7) & TextBox2.Text
Cells(iRow, 7) = Left(strT, 110)
While Len(strT) > 110
strT = Mid(strT, 111)
iRow = iRow + 1
Cells(iRow, 7) = Left(strT, 110)
Wend
Me.Hide
Unload Me
End Sub


Anzeige
AW: auch leere Zeile löschen Code vervollständigen
13.03.2008 18:35:32
Fredd

Private Sub CommandButton2_Click()
Dim AZ As Range
If [G3] = "" Then
Set AZ = [G3]
Else
Set AZ = Cells(Rows.Count, 7).End(xlUp).Offset(2, 0)
End If
AZ = TextBox1
With AZ
.Offset(0, 1) = ComboBox1 & ComboBox2 & ComboBox3 & ComboBox5 & ComboBox4 & ComboBox6
'Columns("A:N").AutoFit
End With
Dim iRow As Long, strT As String
IF TextBox2=""Then Go To Ende
iRow = Cells(Rows.Count, 1).End(xlUp).Row + 2
strT = Cells(iRow, 7) & TextBox2.Text
Cells(iRow, 7) = Left(strT, 110)
While Len(strT) > 110
strT = Mid(strT, 111)
iRow = iRow + 1
Cells(iRow, 7) = Left(strT, 110)
Wend
Ende:
Me.Hide
Unload Me
End Sub


So gehts.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige