Abbrechen Button bringt Fehlermeldung

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
InputBox MsgBox
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

Beiträge aus den Excel-Beispielen zum Thema "Abbrechen Button bringt Fehlermeldung"