Excel Zeilen mit UserForm löschen

Hallo zusammen.

Ich habe ein UserForm erstellt, das eine TextBox und einen Button enthält.
In die Textbox soll die Zahl einer Zeile eingegeben werden, die gelöscht werden soll (also wenn ich in die TextBox eine 8 eingebe, soll Zeile 8 (oder deren Inhalt) gelöscht werden usw.)

Hier mal mein Code der nicht funktioniert:

Code:
Private Sub CommandButton1_Click()
Dim Zeile As Integer
Dim ZeileMax As Integer
With BerechnungFB
ZeileMax = TextBox1.Value
For Zeile = ZeileMax To 1 Step -1
If .Cells(Zeile, 1).Value > 0 Then
.Select
Selection.ClearContents
End If

Next Zeile
End With

End Sub

Wenn ich ihn ausführe kommt „Laufzeitfehler 424 - Objekt erforderlich“ und die Codezeile

Code:
If .Cells(Zeile, 1).Value > 0 Then

ist markiert.

Was mache ich falsch?? Oder hab ich einfach nur wieder unrealistische Vorstellungen??

Danke schonmal

das liegt daran, dass du BerechnungFB verwendest, aber es nicht deklariert hast. Der Code, sowie ich auch, weiß also gar nicht, was das ist. (außer du legst das schon in einer vorgeschalteten Funktion fest)


Dim Zeile As Integer
Sheets(1).Cells(Zeile, 1).EntireRow.Delete

Die zwei zeilen sollten eigentlich machen, was du brauchst

LG OVM

Hallo Bastian,

Ich denke, deine With-Klammer ist nicht so ganz richtig. Was ist denn BerechnungFB? Das Worksheet, aus welchem eine Zeile gelöscht werden soll? Dann käme die Zeile
.Select
nicht hin, denn du willst da ja vermutlich nur die zu löschende Zeile selektieren?

Ich würde es so machen:

Angenommen deine UserForm heißt UserForm1, das Textfeld zum eingeben der Zeilennummer heißt TextBox1, das Worksheet mit den zu löschenden Zeilen heißt „Daten“:

Private Sub CommandButton1\_Click()

Worksheets("Daten").Rows(UserForm1.TextBox1.Value).ClearContents

End Sub

Fertig!

Gruß,
BellHouse

Da ich Deine Code nicht verstehe (was ist „BerechnungFB“?) hier zwei kurze Lösungsansätze:

Private Sub CommandButton1\_Click()
MyRow = Val(TextBox1)


ActiveSheet.Rows(MyRow).Delete ' die Zeile wird \_
 gelöscht und der Rest nach oben geschoben

End Sub

oder

Private Sub CommandButton1\_Click()
MyRow = Val(TextBox1)

ActiveSheet.Rows(MyRow).ClearContents ' nur der Inhalt wird gelöscht


End Sub

Hallo
.Select
Selection.ClearContents
ersetzen durch:
.Cells(Zeile, 1) = „“
Fertig!
Grüsse Sebastian

Weiter sollte mal die Zeile den Grundwert 1 und nicht Null haben. Zudem, wenn Di nur eine zelle löschen möchtest, ist die For Schleife falsch, dann musst Du diese nämlich auslassen. Womöglich kannst Du auf das value der Zelle verzichten.
Ist BerechnungFB den Tabellennamen, so sopllte es funktionieren, ist dies aber der Sheetname, so schlägt alles fehl, dann musst Du zuerst das Sheet selekten. Workbook.Sheet(„BerechnungFB“).Select oder so ähnlich.
Einen Typenkonflikt könnte über die Textbox entstehen,denn Integer geht nur bis 16’000. An stelle könnte man den Typ Long nehmen. Beim Einlesen der Textbox sollte korrekterweise die Textbox nach der Variablen Integer / Long aufgeklöst werden durch z.B. CInt(Textbox.Value) oder CLng(Textbox.Value). Was geschieht, wenn Man einen Buchstaben eingiebt? Dieser fehler sollte man mit If IsNumerig(Textbox.Value) = true Abfangen, wobei dann Punkte noch gehen.

Grüsse Sebastian
Grüsse Sebastian

Hallo,

wenn Du Dich nur auf eine Zeile beschränken willst, würde ich das so machen:

Private Sub CommandButton1_Click()
Dim Zeile As Integer
Dim ZeileMax As Integer

Zeile = TextBox1.Value
If Zeile > 0 And Zeile

mfg cube

Hi, habe den Code noch etwas angepasst…

Private Sub CommandButton1\_Click()
 Zeile = TextBox1.Value
 If Zeile \> 0 And Zeile 

mfg cube

Hallo,
dein Code passt irgendwie nicht zur Beschreibung.
In deinem Code versuchst du den Inhalt der Zeilen 1 bis zur eingegebenen Zeile zu löschen, in deiner Beschreibung möchtest du nur die den Inhalt der eingegebenen Zeile löschen.
Der Fehler rührt daher, dass du kein Blatt hast, auf das sich das .Cells bezieht.

versuchs mal so:

Private Sub CommandButton1_Click()
Dim Zeile as Integer
Dim ZeileMax as Integer
Dim BerechnungFB as Worksheet

Set BerechnungFB = ThisWorkbook.Worksheets(„Tabellenname“)
With BerechnungFB
ZeileMax=TextBox1.Value
For Zeile=ZeileMax To 1 Step-1
.Cells(Zeile,1).EntireRow.Range.ClearContents
Next Zeile
End With
End Sub

Gruß
Vincenz

Hallo Bastian,

habe schon länger keine user forms mehr benutzt.

Nur kurz: warum machst Du es so kompliziert und löschst nicht direkt den Wert?
z.B. mit
cells(ZeileMax , 1).value = „“

Evtl. auch mit „Range“ arbeiten.

(Benutze doch mal den Debugger und schau, ob Du den richtigen Wert mitbekommst, bzw. gehe ein paar Schritte zurück und schaue, ob Du nur den Textfeldwert in eine Zeile schreiben kannst. Evtl. musst Du den Textfeldwert auch erst noch in eine Zahl konvertieren …)
Die For-Schleife denke ich, brauchst Du nicht.

Gruss,

e-a-s-y

Hallo!
Ich sehe im Code ein „With BerechnungFB“, aber kein
„END With“, wobei nicht ersichtlich ist, was „BerechnungFB“ sein soll.
Dementsprechend kann ich nicht erkennen, was
„If .Cells(Zeile, 1).Value > 0 Then“, soll, denn der Interpreter macht daraus " If BerechnungFB.Cells…".

Dieser Fehler sollte aber schon beim Start des Makro reklamiert werden, das Makro also zunächst garnicht starten. Außerdem sind in der Beschreibung nur ein Eingabefeld erwähnt, offensichtlich gibt es aber 2 !!!

Wenn Du in der EXCEL-Hilfe mit dem Stichwort „shortcut“ nachsiehst, findest Du, wie man mittels Tastatur ganze Zeilen selektiert. Dann Taste „del“ drücken, das löscht alle Zellen in der selektierten Zeile. Das Ganze mit Makro-Rekorder aufzeichenen, und Du siehst, wie die entsprechenden Befehle heißen.

Gruß
Wolfram

Hallo Herr Erens,

es könnte sein, dass der Code:
If .Cells(Zeile, 1).Value > 0 Then
so funktioniert:
If Worksheets(„Tabelle(1)“).Cells(Zeile, 1).Value > 0 Then

Gruß Hugo

Ja da würde ich mal schauen welches Zellenformat es ist, es sollte schon eine Zahl sein, dann würde ich nicht größer Null, sondern 0 ausprobieren,

Gruss

habe mal ausprobiert:

so funktioniert es besser

Dim Zeile As Integer
Dim ZeileMax As Integer
With BerechnungFB
ZeileMax = 10 'TextBox1.Value
For Zeile = ZeileMax To 1 Step -1
MsgBox (Worksheets(„Tabelle1“).Cells(Zeile, 1))
If Worksheets(„Tabelle1“).Cells(Zeile, 1).Value 0 Then
Worksheets(„Tabelle1“).Select
Selection.ClearContents
End If

Next Zeile
End With

Gruss

Vielen Dank für die Vorschläge. Das Problem ist gelöst.

Hallo Bastian,
wenn Du auf das Excel-Objektmodell zugreifen willst, dann musst Du sehr genau Ross&Reiter nennen.
In diesem Fall also WITH APPLICATION, dann funktioniert auch die Abfrage.

Hallo zusammen.

Ich habe ein UserForm erstellt, das eine TextBox und einen
Button enthält.
In die Textbox soll die Zahl einer Zeile eingegeben werden,
die gelöscht werden soll (also wenn ich in die TextBox eine 8
eingebe, soll Zeile 8 (oder deren Inhalt) gelöscht werden
usw.)

Hier mal mein Code der nicht funktioniert:

Code:
Private Sub CommandButton1_Click()
Dim Zeile As Integer
Dim ZeileMax As Integer
With BerechnungFB

Probier hier mal With Application

ZeileMax = TextBox1.Value
For Zeile = ZeileMax To 1 Step -1
If .Cells(Zeile, 1).Value > 0 Then

Das zeigt Dir hier nur die erste Zelle in der ersten Spalte.

.Select

Hier wird der nächste Fehler passieren: was denn ?

Selection.ClearContents
End If

Next Zeile
End With

End Sub

Wenn ich ihn ausführe kommt „Laufzeitfehler 424 - Objekt
erforderlich“ und die Codezeile

So könnte es klappen (Deine Eingabebox mal weggelassen):

Private Sub TestLine()

Dim Zeile As Integer
Dim ZeileMax As Integer

With Application
ZeileMax = 9
For Zeile = ZeileMax To 1 Step -1
If .Cells(Zeile, 1).Value > 0 Then
Rows("" & Zeile & „:“ & Zeile).Select
Selection.ClearContents
End If
Next Zeile
End With

End Sub

Code:
If .Cells(Zeile, 1).Value > 0 Then

ist markiert.

Was mache ich falsch?? Oder hab ich einfach nur wieder
unrealistische Vorstellungen??

Danke schonmal