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

Zeile mit Namen nicht löschen;VBA

Zeile mit Namen nicht löschen;VBA
03.02.2004 17:15:39
Werner
Hallo nochmal,
habe mich vielleicht gestern nicht korrekt ausgedrückt,das Problem wurde wohl nicht verstanden:
mit folgendem Code wird jede, von mir in die Textbox eigegebene,Zeile gelöscht,außer:
die Zeilennummer ist größer als 500
die Zeilennummer ist 1 oder 2 oder 3 (0 ist nur angegeben damit kein Fehler erzeugt wird).Soweit funktioniert es auch.
Private Sub CommandButton1_Click()
Nr = UserForm3.TextBox1.Value
Application.ScreenUpdating = False
If Not IsNumeric(Nr) Then GoTo Fehler2
If Nr > 500 Then GoTo Fehler3
If Nr = 3 Or Nr = 2 Or Nr = 1 Or Nr = 0 Then GoTo Fehler1
Rows(Nr).Select
Wert1 = MsgBox("Möchten Sie wirklich die Zeile " & UserForm3.TextBox1 & " entfernen?", 1, "Rückfrage")
If Wert1 = 2 Then Exit Sub Else Selection.Delete
Nun habe ich eine Zelle -irgendwo- in Spalte A,der ich den Namen "einfuegen" gab.Die Zeile,in der sich diese Zelle befindet,darf nicht gelöscht werden,es soll eine Fehlermeldung erscheinen (Fehler1).
(könnte auch der Zeile einen Namen geben ??)
Hoffe dass es für VBA-Fachleute verständlich ist und mir jemand eine Möglichkeit nennen kann.
Gruß Werner

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 17:44:16
Alex K.
Hallo Werner,
versuche es mal damit:

If Nr = 3 Or Nr = 2 Or Nr = 1 Or Nr = 0 Or ActiveSheet.Range("einfuegen").Row = Nr Then GoTo Fehler1

Noch ein Tipp, benutze keine GoTo's. Dies ist schlechter Programmierstil.
Probiere es mal so:

If Nr > 500 Then
MsgBox "Fehler3"
'oder alternative, wenn mehr zu machen ist, eine Prozedur aufrufen
Call Fehler3
exit sub
end if
Private Sub Fehler3()
'dein Code
End Sub

AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 17:50:46
Werner
Hallo Alex,
so funktioniert es leider nicht..
Gruß Werner
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 17:58:09
Alex K.
HAllo Werner,
wenn wir uns schon die Mühe machen, dir zu antworten, könnstet du dann auch so nett sein, deine Antworten ausführlicher zu gestalten.
Kommt ein Fehler beim Kompilieren, wird die Zeile nicht gelöscht, ist der Name "einfuegen" evtl. falsch geschrieben oder nicht im aktiven Tabellenblatt nicht vorhanden?
Zu Not einfach mal einen Haltepunkt in der Zeile mit der Abfrage setzen und schauen, was in Nr und in ActiveSheet.Range("einfuegen").Row steht.
Einfach zu schreiben "so funktioniert es leider nicht" funktioniert leider auch bei mir nicht :-)
Anzeige
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 18:01:30
Werner
Hallo Alex,
ich war bißchen zu schnell,hast recht sollte schon beschreiben was nicht geht...also diese Eingabe wird ignoriert,kommt keine Meldung,er will die "verbotene Zeile" löschen.
Gruß Werner
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 18:06:46
Alex K.
Hallo Werner,
ist natürlich schwierig, eine Ferndiagnose zu machen.
Also wie gesagt, entweder einen Haltepunkt in der Zeile setzen und die Werte von Nr und ActiveSheet.Range("einfuegen").Row abfragen.
Du kannst aber vor der If-Abfrage folgenden Befehl einfügen:

MsgBox "Nr: " & Nr & "; Range(einfuegen): " & ActiveSheet.Range("einfuegen").Row

Damit müssten wir dann sehen, was nicht stimmt.
Anzeige
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 18:25:32
Werner
Hallo Alex,
nach Eingabe dieses Befehls zeigt die MsgBox die richtige Zeile an,er findet sie also.
MELDUNG: Nr: 33 (meine Eingabe);Range (einfuegen):22 (das ist die richtige Zeile)
Gruss Werner
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 18:28:17
Alex K.
Hallo Werner,
bitte entschuldige die Frage, aber willst du mich auf den Arm nehmen:
MELDUNG: Nr: 33 (meine Eingabe);Range (einfuegen):22 (das ist die richtige Zeile)
Du gibst also die Zeile 33 an. Die Zelle mit den Namen "einfuegen" ist aber in der Zeile 22!! 33 ist nicht gleich 22!!!! Also löscht er die Zeile auch korrekterweise. Wenn du 22 eingibst, dann wird er die Zeile 22 auch nicht löschen!!!!!!
Anzeige
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 18:38:11
Werner
Hallo Alex,
im Normalfall kenne ich die betreffende Zeile doch gar nicht!Im Datenbereich werden ständig Zeilen eingefügt und gelöscht,so weiß ich nie wo sich die Zeile befindet (und welche Nr. sie hat)in deren "A"-Spalte sich die Zelle "einfuegen" befindet!
ok??
Gruß werner
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 18:45:23
Alex K.
Hallo Werner,
deshalb haben wir ja auch nicht eine feste Zeilennumer z.b. 22 genommen. Sondern wir fragen mit Range("einfuegen").Row immer die AKTUELLE Zeilennumer der Zeile mit der Zelle "einfuegen" ab. D.h. wenn die Zelle "einfuegen" in Zeile 33 am Anfang steht und du löschst 11 Zeile VOR der Zeile 33, dann steht nach der Löschung der 11 Zeilen "einfuegen" in Zeile 22!!! Somit ist vor der Löschung die Zeile 33 geschützt und nach der Löschung die Zeile 22!!!
Also bevor du testest, schaue doch erst einmal, in welcher Zeile sich die Zelle "einfuegen" befindent. Wenn sie in Zeile 22 ist, dann mußt du zum Test auch die Zeile 22 angeben, wenn sie in der Zeile 33 ist, dann eben 33. Wie gesagt, das Ganze ist dynamisch. Aber die Abfrage mit Range("einfuegen").Row trägt diesem Umstand Rechnung. Die Zeile mit "einfuege" bleibt immer erhalten!!!!
Wenn du allerdings willst, dass die Zeile mit der Zelle "einfuegen" IMMER die gleiche Zeile beibehält, egal wieviele Zeilen davor gelöscht werden, ist dies eine andere Aufgabenstellung.
Also eine große Bitte an dich, bitte formuliere deine Anfragen so eindeutig, dass man sie auch verstehen kann. Dann kann man dir auch helfen!!!!
Anzeige
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 20:08:41
Werner
Hallo Alex,
also das Ganze nenne ich jetzt mal "Mißverständnis"!Du hast es schon richtig verstanden,Range"einfuegen" wandert mit einfügen und löschen von Zeilen.
Mit der Eingabe Deines Befehls wird die betreffende Zeile zwar erkannt,aber nach OK-Click kommt die Anfrage ob ich die Zeile wirklich löschen will,sie ist also nicht geschützt.
Ich dachte vorhin Du wolltest nur sehen ob sie erkannt wird!
Sind wir jetzt auf dem selben Wege??
Gruß Werner
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 20:13:35
Alex K.
HAllo Werner,
ist schon ok. Wie ich gesehen habe, hast du ja von "y" eine Lösung bekommen. Ich habe mich nur etwas veräppelt gefühlt, als du Zeile 33 mit 22 verglichen hast :-)
Anzeige
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 20:17:57
Werner
OK Alex,
dann bedank ich mich - als schwierigster Fall des Tages - auch bei Dir und kann nur wiederholen:es ist nicht immer einfach ein Problem zu schildern und/oder den Gedanken des Gegenüber sofort zu erkennen.
Nichts für ungut.
Gruß Werner
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 17:45:14
Axel
Hallo,
zu der Struktur deines Codes sage ich mal besser nichts.
Wenn du die Zeilennummer der Zelle mit den Namen "einfuegen" zusätzlich abfragen möchtest, schiebe einfach folgenden Code ein:
If Nr = [einfuegen].Row Then ...
Gruß
Axel
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 17:55:24
Werner
Sorry Axel,
auch so geht es nicht.
Tut mir leid,ich begann einmal vor fast 20 Jahren mit Mallard-Basic zu programmieren.Da waren Goto's und GoSub's ziemlich hilfreich.Klar das sich alles entwickelt,man kommt schlecht von seinen Gewohnheiten los...*ggg*
Gruß Werner
Anzeige
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 18:23:04
y
hi Werner,
probier mal das:

Private Sub CommandButton1_Click()
Dim nr As Integer
Dim wert As Byte
nr = 7 'UserForm3.TextBox1.Value
If Not IsNumeric(nr) Or nr = 0 Or nr = 1 Or nr = 2 Or nr = 3 Or nr > 500 Then
MsgBox (" Sie dürfen die Zeile 1  2  3 " & Chr(13) & "oder größer als 500 nicht löschen " & Chr(13) & Chr(13) & " Sie haben " & nr & " eingegeben")
Exit Sub
End If
If ActiveSheet.Range("einfuegen").Row = nr Then
MsgBox ("Dies ist eine geschützte Zeile")
Exit Sub
End If
wert = MsgBox("Möchten Sie wirklich die Zeile " & nr & " entfernen?", 1, "Rückfrage")
If wert = 2 Then
Exit Sub
End If
Rows(nr).Delete
End Sub

cu Micha
Anzeige
AW: Zeile mit Namen nicht löschen;VBA
03.02.2004 18:32:58
Werner
Hallo Micha,
das ist ja spitzenmäßig....sollte wohl doch bissle VBA-Unterricht nehmen???
Danke
danke für die rückmeldung m.t.
03.02.2004 18:40:23
y
hi Werner,
das hätten die beiden anderen bestimmt genauso wenn nicht besser hinbekommen und normalerweise misch ich mich auch nicht ein
@Alex sorry
aber ich konnte das einfach nicht mehr mitansehen ;-)
wenn man versucht dir zu helfen solltest du auch das machen was man dir sagt ;-)
nichts für ungut
cu Micha
AW: danke für die rückmeldung m.t.
03.02.2004 18:56:49
Alex K.
Hallo y,
wenn du meine weiteren Kommunikation mit Werner ab 03.02.2004 18:25:32 verfolgst, wirst du sehen, dass das Problem leiter noch nicht gelöst ist. Dein Makro ist zwar lobenswert strukturiert, aber löst das eigentliche Problem mit der Zelle "einfuegen" noch nicht. Falls ich mich aber in dem Punkt irren sollte, dann bitte ich um Entschuldigung und werde meine Hilfe sofort einstellen.
Anzeige
AW: danke für die rückmeldung m.t.
03.02.2004 19:50:36
Werner
Hallo Alex,
die von Micha entwickelte Lösung haut genau hin...wenn die Zeile (mit der Zelle "einfuegen") zum Löschen eingegeben wird erscheint die Meldung: dies ist eine geschützte Zeile!
Danke auch Dir für die Mühe,ist halt auf die Ferne nicht immer einfach,selbst mit dem Beschreiben von Problemen tut man sich oft schwer.Man setzt eben zu viel voraus....
Bis bald mal wieder
Gruß Werner
AW: danke für die rückmeldung m.t.
03.02.2004 21:22:22
y
hi Alex,
ich hoffe das hast du nicht so gemeint wie es zu verstehen wäre:
zitat anfang
Falls ich mich aber in dem Punkt irren sollte, dann bitte ich um Entschuldigung und werde meine Hilfe sofort einstellen.
zitat ende
du meinst hoffentlich nur diesen "fall" *hoffentlich* *zitter* *bibber*
äähhh... y = Micha ich hab nur dieses pseudonym gewählt um mich von den anderen 100.000 Micha's in diesem forum zu unterscheiden
cu Micha
Anzeige
AW: danke für die rückmeldung m.t.
04.02.2004 09:06:19
Alex K.
HAllo y alias Micha,
nein, das habe ich todernste gemeint. Wenn meine Hilfe nicht erwünscht ist, werde ich mich restlos in meine Schmollecke zurückziehen - schweren Herzen zwar, da mir die User hier sehr ans Herz gewachsen sind und ich mich nur schwer von liebgewonnenen Dingen trennen kann. So, jetzt werde ich noch etwas weinen und mich dann wieder der Heilsarmee widmen ... wir sehen uns ja dort - bis bald

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige