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

leere zeile löschen

leere zeile löschen
16.06.2003 17:27:21
IVAN
hallo ihr lieben!
FRAGE:
wie kann ich eine leere zeile per vba finden und löschen.

erklärung:
diese leerzeile ensteht immer wenn ich aus der userform,
11 textboxen, die textboxen leere und dann meine daten sortiere.
dann habe ich pro gelöschten datensatz eine leerzeile .
die sich seltsamerweise oberhalb von meinen daten in der tabelle befindet obwohl ich sortiert habe.

danke

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: leere zeile löschen
16.06.2003 17:34:03
Mike E.

Hallo,

For i = 1 To Cells.SpecialCells(xllastCell).Row

if IsEmpty(Rows(i)) Then Rows(i).Delete

Next i

Gruß
Mike

Re: leere zeile löschen
16.06.2003 17:34:57
Nepumuk

Hallo Ivan,
und warum loschst du die Zeile nicht dann, wenn du die Textboxen leerst? Zu der Zeit ist dir die Zeilennummer doch bekannt, dann einfach mit dem Befehl Rows(Zeilennummer).Delete Shift:=xlShiftup
Gruß
Nepumuk

ja...oder eben so....
16.06.2003 17:35:59
Mike E.



Re: leere zeile löschen
16.06.2003 17:52:01
IVAN

hi
wie bringe ich die zeilennr. die mir ja bekannt ist in den code
die zeile ist ja immer anders??
DANKE IVAN

Re: leere zeile löschen
16.06.2003 17:55:41
Nepumuk

Hallo Ivan,
wenn du die Textboxen füllst, müssen die Daten aus der Tabelle gelesen werden. Dazu brauchst du doch die Zeilennummer und die kannst du dann einfach in den Löschbefehl einsetzen.
Gruß
Nepumuk

Anzeige
Re: leere zeile löschen
16.06.2003 17:57:15
IVAN

HI MIKE
hab es versucht aber ich bekomme einen überlauf fehler???
HAST DU DAS SO GEMEINT??

Private Sub CommandButton3_Click()
For i = 1 To Cells.SpecialCells(xlLastCell).Row
If IsEmpty(Rows(i)) Then Rows(i).Delete
Next i
End Sub

danke ivan


Re: leere zeile löschen
16.06.2003 18:01:03
IVAN

hi
ich will aber per das der datensatz per COMMANDBUTTEN IN DER USERFORM1 gelöscht wird !!!
DANKE
IVAN

Re: leere zeile löschen
16.06.2003 18:07:05
Nepumuk

Hallo Ivan,
das ist sowieso besser. Lass mal den Code sehen, mit dem die Daten in die Userform kommen. Da lässt sich bestimmt etwas machen.
Gruß
Nepumuk

Anzeige
Re: leere zeile löschen
16.06.2003 18:19:38
IVAN

HI NEPUMUK

HIER DER CODE

Private Sub UserForm_Initialize()
ComboBox1.RowSource = "DB!A2:A" & Sheets("DB").Range("A65536").End(xlUp).Row
ListBox4.ColumnCount = 1
ListBox4.RowSource = "DB!AV1:AV" & Sheets("DB").Range("AV65536").End(xlUp).Row

'listbox spalten breite einstellen
Dim i As Integer
i = ActiveSheet.UsedRange.Rows.Count

ListBox1.ColumnWidths = "6 Pt"
ListBox4.ColumnWidths = "2 Pt"
With UserForm1.ComboBox1
i = ActiveSheet.UsedRange.Rows.Count
With UserForm1.ComboBox1
.ColumnCount = 1
.ColumnHeads = False
.ColumnWidths = "8cm;"
End With
End With
End Sub
Private Sub Userform_Activate()
Suche.Caption = "Suche"
End Sub
'suchen
Private Sub Suche_Click()
On Error Resume Next
If Err.Number <> 0 Then
MsgBox "Kein Eintrag vorhanden!", vbCritical, "Schreiben Sie was rein"
End If
Dim e As String

Dim s As String
Dim Found As Range
Dim FirstAddress As String
Dim i As Integer ' Zeile
i = 0
If ComboBox1.Text = "" Then
MsgBox "Kein Eintrag vorhanden!", vbCritical, "Was soll ich den suchen?"
Suche.SetFocus
Else
End If
e = ComboBox1.Text
If e = "" Then Exit Sub
ListBox1.Clear
ListBox2.Clear
With ActiveSheet
Set Found = .Cells.Find(e, LookAt:=xlPart)
If Not Found Is Nothing Then
FirstAddress = Found.Address
ListBox1.ColumnCount = 1
ListBox1.AddItem Found
ListBox1.List(i, 1) = Cells(Found.Row, 13)
ListBox2.AddItem Found.Row
i = i + 1
Do
Found.Activate
Set Found = Cells.FindNext(After:=ActiveCell)
On Error Resume Next
If Found.Address = FirstAddress Then Exit Do
ListBox1.AddItem Found
ListBox1.List(i, 1) = Cells(Found.Row, 13)
ListBox2.AddItem Found.Row
i = i + 1
Loop
End If
End With
Suche.Caption = "Neue Suche"
End Sub

'Hier erfolgt die Ausgabe des gesuchten
'in DER LISTBOX1
Private Sub ListBox1_Click()
If ListBox1.Value <> "" Then
On Error Resume Next
ListBox2.ListIndex = ListBox1.ListIndex

txtNachname = Cells(ListBox2.Value, 1)
txtVorname = Cells(ListBox2.Value, 2)
txtPlz = Cells(ListBox2.Value, 3)
txtOrt = Cells(ListBox2.Value, 4)
txtAdresse = Cells(ListBox2.Value, 5)
txtTelefon = Cells(ListBox2.Value, 6)
txtHandy = Cells(ListBox2.Value, 7)
txtFax = Cells(ListBox2.Value, 8)
txtEmail = Cells(ListBox2.Value, 9)
txtKennung = Cells(ListBox2.Value, 10)
txtAnmerkung = Cells(ListBox2.Value, 11)
'txtGesamtPreis = Cells(ListBox2.Value, 20) & " €"

End If
End Sub

DANKE IVAN




Anzeige
Re: leere zeile löschen
16.06.2003 19:44:47
Nepumuk

Hallo Ivan,
ich habe dir mal ein einfaches Beispiel auf Grundlage deines Codes gebastelt. Das musst du an deine Verhältnisse (12 Textboxen anderer Commanbutton) nur noch anpassen.

Die Variable Zeile kannst du auch für das TextboxX_KeyDown Ereignis verwenden. Das ist sicherer als auf die Listbox2-Variable zurückzugreifen.
Gruß
Nepumuk



Re: leere zeile löschen
17.06.2003 09:46:57
IVAN

hi
vielen dank
werde es gleich ausprobieren.
allerdings weis ich noch nicht wie ich das mit den txtboxen machen soll.aber ich spieL mal herum, wenn nicht schreib ich einen neuen beitrag oder hier???
danke
ivan

Anzeige
Re: leere zeile löschen
17.06.2003 14:32:11
IVAN

hi
ich krieg das nicht hin mit dem löschen
ich weis nicht wie du das meinst!!
schau mal ich hab den code geändert.

was ist da falsch???

'Hier erfolgt die Ausgabe des gesuchten
'in der ListBox1
Private Sub ListBox1_Click()
Dim loeschen As Boolean, zeile As Long
If ListBox1.Value <> "" Then
On Error Resume Next
'ListBox2.ListIndex = ListBox1.ListIndex
If Not loeschen Then
ListBox2.ListIndex = ListBox1.ListIndex
zeile = ListBox2.List(ListBox2.ListIndex)
txtNachname = Cells(zeile, 1)
txtVorname = Cells(zeile, 2)
txtPlz = Cells(zeile, 3)
txtOrt = Cells(zeile, 4)
txtAdresse = Cells(zeile, 5)
txtTelefon = Cells(zeile, 6)
txtHandy = Cells(zeile, 7)
txtFax = Cells(zeile, 8)
txtEmail = Cells(zeile, 9)
txtKennung = Cells(zeile, 10)
txtAnmerkung = Cells(zeile, 11)

End If
'txtNachname = Cells(ListBox2.Value, 1)
'txtVorname = Cells(ListBox2.Value, 2)
'txtPlz = Cells(ListBox2.Value, 3)
'txtOrt = Cells(ListBox2.Value, 4)
'txtAdresse = Cells(ListBox2.Value, 5)
'txtTelefon = Cells(ListBox2.Value, 6)
'txtHandy = Cells(ListBox2.Value, 7)
'txtFax = Cells(ListBox2.Value, 8)
'txtEmail = Cells(ListBox2.Value, 9)
'txtKennung = Cells(ListBox2.Value, 10)
'txtAnmerkung = Cells(ListBox2.Value, 11)
'txtGesamtPreis = Cells(ListBox2.Value, 20) & " €"
End If
End Sub
Private Sub CommandButton3_Click()
Dim index As Long
loeschen = True
If txtNachname.Value <> "" Then
If txtVorname.Value <> "" Then
If txtPlz.Value <> "" Then
If txtOrt.Value <> "" Then
If txtAdresse.Value <> "" Then
If txtTelefon.Value <> "" Then
If txtHandy.Value <> "" Then
If txtFax.Value <> "" Then
If txtEmail.Value <> "" Then
If txtKennung.Value <> "" Then
If txtAnmerkung.Value <> "" Then

Rows(zeile).Delete Shift:=xlShiftUp
ListBox2.RemoveItem (ListBox2.ListIndex)
ListBox1.RemoveItem (ListBox1.ListIndex)
If ListBox2.ListIndex < ListBox2.ListCount - 1 Then
For index = ListBox2.ListIndex To ListBox2.ListCount - 1
ListBox2.List(index) = ListBox2.List(index) - 1
Next
End If
txtNachname = ""
txtVorname = ""
txtPlz = ""
txtOrt = ""
txtAdresse = ""
txtTelefon = ""
txtHandy = ""
txtFax = ""
txtEmail = ""
txtKennung = ""
txtAnmerkung = ""

ListBox1.ListIndex = -1
ListBox2.ListIndex = -1
End If
loeschen = False
End Sub

danke
Ivan

Anzeige
Re: leere zeile löschen
17.06.2003 17:12:50
Nepumuk

Hallo Ivan,
so war das gemeint:

Die erste Zeile (Dim loeschen As Boolean, zeile As Long) muss außerhalb der Makros liegen. Noch ein Tip für die Zukunft. Deine Textboxen haben alle schönen Namen. Diese Namen sind aber für den User 1. überhaupt nicht zu sehen und 2. zum Programmieren ziemlich unhandlich. Das füllen den Textboxen wäre, wenn deren Index mit den Spaltennummern übereinstimmen würden wesentlich eleganter zu lösen. Beispiel für dein 11 Textboxen:

For index = 1 To 11
Me.Controls("TextBox" & CStr(index)).Value = Cells(zeile, index)
Next

Du brauchst zum füllen deine Textboxen 11 Zeilen ich 3. Jetzt stell dir 40 oder 50 Textboxen vor (40 bis 50 Zeilen nur zum füllen ich brauche immer noch drei Zeilen).
Gruß
Nepumuk

Anzeige
Re: INDEX NOCH OFFEN 1 TO 11
17.06.2003 18:44:33
IVAN

hi vielen dank
1.ich finde keine worte es funkt mit dem löschen!!
das man so ein wissen haben kann wie du unglaublich!!

das zweite habe ich versucht aber er schreit nach einer variablen
variable nicht definiert!!!

dim index As String '??falsch oder( habe ich versucht,fehler typen unverträgl.)
For index = 1 To 11
Me.Controls("TextBox" & CStr(index)).Value = Cells(zeile, index)
Next




Re: INDEX NOCH OFFEN 1 TO 11
17.06.2003 22:29:21
Nepumuk

Hallo Ivan,
überleg mal, die Variable index soll von 1 bis 11 hochgezählt werden. Da ist doch ein String, der Buchstaben, Sonderzeichen und ähnliches enthält völlig falsch. Die Variable index ist, um abwärtskompatibel zu sein, eine Interger-Variable, oder, wenn du ausschließen kannst, das dein Programm auf einer niedrigeren Version als Excel2000 läuft, eine Byte-Variable.
Gruß
Nepumuk
P.S. Das ist die Erfahrung aus 8 Jahren. Ich habe mir alles selbst beigebracht und ich mache das nicht beruflich, sondern nur um nicht zu verkalken, ich bin ja auch nicht mehr der jüngste.



Anzeige
Re: INDEX NOCH OFFEN 1 TO 11
18.06.2003 09:57:26
IVAN

hi nepumuk
also ich versucht die alten txtNachname unsw. alle 11,
zu deaktivieren und jetz mit deiner neuen variant einzugeben.
aber in den textboxen wird nichts angezeigt.
muß ich die namen der textboxen ändern??AUF TXTBOX1 UNSW.
und wo soll ich den die 4 zeilen einfügen habe alles versucht
aber kein erfolg!

Dim index As Integer
For index = 1 To 11
Me.Controls("TextBox" & CStr(index)).Value = Cells(zeile, index)
Next

DANKE für die Lehrstunden!
IVAN

Re: INDEX NOCH OFFEN 1 TO 11
18.06.2003 10:36:30
Nepumuk

Hallo Ivan,
die TextBoxen sollten die Namen TextBox1 bis TextBox11 erhalten. Die Nummer hinten dran, sollte der Zeilennummer der Celle entsprechen. Also aus txtNachname wird TextBox1 aus txtVorname wird TextBox2 usw.
Den Code für die Ausgabe in den TextBoxen änderst du dann so:

Gruß
Nepumuk

Anzeige
Re: alles erledigt danke
18.06.2003 11:06:14
IVAN

hi
du bist ein geniales genie vielen dank!
vieleicht kann ich dir auch einmal helfen,
ich bin webmaster,zb.php,sql,apache,html oder so wenn du eine frage hast schreib eine e-mail.
außer du kanst das auch noch(was mich nicht wundern würde)!!!

GRÜße aus der Donaustadt Wien
ivan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige