Herbers Excel-Forum - das Archiv

Abbrechen Button bringt Fehlermeldung

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Abbrechen Button bringt Fehlermeldung
von: Ralf

Geschrieben am: 21.04.2005 13:57:58
Woran könnte das liegen, dass ich ne Fehlermeldung bekomme,wenn ich den Abbrechen Button anklicke??
Sub LoeschenClick()
Dim intZeile As Integer
intZeile = InputBox("Welche Zeile soll gelöscht werden?")
intZeile = intZeile + 4 'Deine 1. Zeile beginnt ja in Zeile 5 von Excel
Range("C" & intZeile & ":O" & intZeile).Select
Selection.Delete Shift:=xlUp
End Sub

Gruß Ralf
Bild

Betrifft: AW: Abbrechen Button bringt Fehlermeldung
von: WernerB.

Geschrieben am: 21.04.2005 15:09:56
Hallo Ralf,
auch wenn Du den InputBox-Rückgabewert als Integer dimensionierst, so erfolgt er doch immer als String.
Die Reaktion auf das Drücken des Abbruch-Schalters muss programmiert werden; der Abbruch erfolgt nicht selbsttätig. Wird der Abbruch-Schalter gedrückt oder eine Leereingabe getätigt, so wird "" (=Leerstring) zurückgegeben. Deine Variable intZeile kann aber mit "" nichts anfangen (0 und "" sind zwei verschiedene Werte!); deshalb läuft Dein Makro auf einen Fehler.
Wie gefällt Dir das?
Sub LoeschenClick()
Dim strZeile As String, _
intZeile As Integer
strZeile = InputBox("Welche Zeile soll gelöscht werden?")
If strZeile = "" Then
MsgBox "Keine Eingabe !" & vbCr & vbCr & "Makro-Abbruch !", _
16, "Dezenter Hinweis für " & Application.UserName & ":"
Exit Sub
End If
intZeile = CInt(strZeile) + 4 'Deine 1. Zeile beginnt ja in Zeile 5 von Excel
Range("C" & intZeile & ":O" & intZeile).Delete Shift:=xlUp
End Sub

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Bild

Betrifft: AW: Abbrechen Button bringt Fehlermeldung
von: Ralf

Geschrieben am: 21.04.2005 15:26:36
Hallo Werner, danke mal, mußte das Programm noch ein bischen ändern, ich hoffe das es so auch läuft. Meinst du es läuft so ohne Probleme.
Sub löschen_klick()
Dim strZeile As String, _
intZeile As Integer
strZeile = InputBox("Welche Zeile soll gelöscht werden?")
If strZeile = "" Then
Exit Sub
End If
intZeile = CInt(strZeile) + 3 'Deine 1. Zeile beginnt ja in Zeile 5 von Excel
Range("C" & intZeile & ":N" & intZeile).Select
Selection.Delete Shift:=xlUp
End Sub


Bild

Betrifft: AW: Abbrechen Button bringt Fehlermeldung
von: WernerB.

Geschrieben am: 22.04.2005 07:48:22
Hallo Ralf,
fehlerfreie Makros gibt es nicht.
Und ob Dein Makro immer fehlerfrei läuft, kann ich auch nicht beurteilen, zumal ich ja Deine Ansprüche an das Makro und die Randbedingungen in der/den Datei/en, in denen es eingesetzt werden soll, nicht kenne.
Natürlich sollte es das Anliegen jedes Programmierers sein, mit seinen Makros möglichst keine Fehler zu erzeugen. Dazu hat dann jeder seine eigene Philosophie, die in den Augen eines anderen eben auch über- oder untertrieben erscheinen mag; die Grenzen sind hier fließend.
Dazu ein Beispiel: In der Regel verwende ich für Zeilennummern nur Long-Variablen, weil Integer-Variablen ja nur bis +32.767 reichen, Excel aber über 65.536 Zeilen verfügt.; d.h., bei einer Zeilennummer von z.B. 50.000 und der Verwendung einer Integer-Variablen wird Dein Makro auf einen Fehler laufen. Solange Du Dich in den Grenzen der Integer-Variablen bewegst, tritt dieser Fehler natürlich nicht auf und das Makro scheint relativ "fehlerfrei" zu sein.
Noch eine (ungefragte) Anmerkung zum Programmierstil: In diesem Forum wird aus guten Gründen vom Forumsbetreiber und den hier antwortenden Experten (um das Wort "Profi" zu vermeiden) die so genannte "Selectfreie Programmierung" propagiert, die auch ich weitgehend pflege.
Um bei Deinem Makro zu bleiben: Das "Select" am Ende ist nicht nötig, die beiden letzten Zeilen können zu einer Zeile zusammengefasst werden.
Wenn Du auch auf die MsgBox bei "Abbruch verzichten willst, könnte das Makro also auch so aussehen (ohne Garantie auf "Felerfreiheit"):
Sub löschen_klick()
Dim strZeile As String, _
lngZeile As Integer
strZeile = InputBox("Welche Zeile soll gelöscht werden?")
If strZeile = "" Then Exit Sub
lngZeile = CLng(strZeile) + 3 'Deine 1. Zeile beginnt ja in Zeile 5 von Excel
Range("C" & lngZeile & ":N" & lngZeile).Delete Shift:=xlUp
End Sub

Ich hoffe, dass ich Dich mit meinen Ausführungen nicht zu sehr genervt habe.

Gruß
WernerB.
Bild

Betrifft: AW: Abbrechen Button bringt Fehlermeldung
von: Ralf
Geschrieben am: 23.04.2005 14:53:18
Hallo Werner, ich danke dir nochmal und nerven tust du mich nicht, bin froh wenn mir mal jemand ein bischen was erklärt.
Gruß Ralf
 Bild
Excel-Beispiele zum Thema "Abbrechen Button bringt Fehlermeldung"
Wav-Datei abspielen und mit ESC abbrechen Zeilen bedingt durch SpinButton verschieben
Maximalwert eines SpinButtons nach Zellwert festlegen Auf UserForm-CommandButton-Klick eine Internetseite aufrufen
Zelleintrag durch OptionButton-Betätigung ein- und ausschalten Zellwerte über SpinButton und ScrollBar hochzählen
UserForm mit SpinButton zur Datenreiheneinstellung aufrufen CommandButtons in verschiedenen Tabellen mit einem Makro
Auflisten von OptionButtons in Kontextmenü Button im selektierten Bereich erstellen und Makro zuweisen