Microsoft Excel

Herbers Excel/VBA-Archiv

Laufzeitfehler

Betrifft: Laufzeitfehler
von: WilhelmR.
Geschrieben am: 13.04.2003 - 19:18:48

mit folgendem Makro rechne ich Eingaben in eine Zelle nach Vorgabe um:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim BBBereich As Range
Set BBBereich = Range("B14:B51")
If Intersect(ActiveCell, BBBereich) Is Nothing Then Exit Sub
Dim intZahl As Double
intZahl = Sheets("PUR Schalen").Range("L10").Value
Application.EnableEvents = False
Target = WorksheetFunction.RoundUp(Target / intZahl, 0) * intZahl
Application.EnableEvents = True
End Sub
Dieser Teilungsfaktor wird über intZahl in die Formel übernommen.
Problem: Wenn ich nun meine Eingabe in Spalte B löschen will, geht das nur wenn ich Zelle nach Zelle einzeln lösche.
Markiere ich meine Eingabe z.B. B15 bis B20 und lösche die Markierung per "entf", erhalte ich eine Fehlermeldung: Laufzeitfehler 13; Typen unverträglich.
Danach läuft auch das Makro nicht mehr, bis zu einem Neustart der Datei.
Gibt es dafür eine Erklärung bzw. Lösung?
Wilhelm

  

Re: Laufzeitfehler
von: Forum
Geschrieben am: 13.04.2003 - 19:22:53

Hallo Wilhelm

mal ein Beispielcode


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'   erstellt von Hajo.Ziplies@web.de 14.12.02
'   HINTERGRUND
'   für Schrift RaZelle.Font.ColorIndex
    Dim RaBereich As Range, RaZelle As Range
    ' Bereich der Wirksamkeit
    Set RaBereich = Range("B3:C20, D1:D7")
'    ActiveSheet.Unprotect
    For Each RaZelle In Range(Target.Address)
        If Not Intersect(RaZelle, RaBereich) Is Nothing Then
            Select Case UCase(RaZelle.Value) ' UMWANDLUNG DER Eingabe in Großbuchstaben
                Case "1"
                    RaZelle.Interior.ColorIndex = 1
                    ' schwarz
                Case "2"
                    RaZelle.Interior.ColorIndex = 6
                    ' weiß
                Case "3"
                    RaZelle.Interior.ColorIndex = 3
                    ' rot
                Case "4"
                    RaZelle.Interior.ColorIndex = 4
                    ' grün
                Case "KLAUS"
                    RaZelle.Interior.ColorIndex = 5
                    ' blau
                Case Else
                    RaZelle.Interior.ColorIndex = xlNone
                    ' Keine
            End Select
        End If
    Next RaZelle
'    ActiveSheet.protect
    Set RaBereich = Nothing
End Sub

Gruß Hajo
Der Code wurde getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.
Microsoft MVP für Excel

  

Re: Laufzeitfehler
von: WilhelmR.
Geschrieben am: 14.04.2003 - 08:35:40

Hallo Hajo,
vielen Dank, aber ich weiss nicht ob das das Problem trifft.
Ich habe in Zelle L 10 einen variablen Wert stehen.
Und mit diesem Wert soll die Eingabe in der Zelle B15 bis B52 verarbeitet werden, bis zur nächsten ohne Rest teilbaren Zahl. Beispiel: In L10 steht 1,2; Eingabe in Zelle B15 ist 5; Ergebnis der Eingabe ist somit 6.
Ich glaube nicht, daß "Case" hier die passende Lösung ist, da die Variable ziemlich "variabel" sein kann.
Gruß Wilhelm

  

Re: Laufzeitfehler
von: Forum
Geschrieben am: 14.04.2003 - 09:17:39

Hallo Wilhelm

es ging nur um das Prinzip das mehrere Zellen mit einmal ausgefüllt werden. Also ist der Code nur bis
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
relevant danach muß Du Deinen Code einfügen.

Gruß Hajo
Der Code wurde getestet unter Betriebssystem XP Pro und Excel Version XP SBE.
Bitte kein Mail, Probleme sollen im Forum gelöst werden.
Microsoft MVP für Excel


  

Re: Laufzeitfehler
von: WilhelmR.
Geschrieben am: 14.04.2003 - 10:25:40

Hallo Hajo,
Habe das Problem wie folgt gelöst (hoffentlich):
Code bleibt an sich unverändert, erste Zeile lautet:
On Error Resume Next
ich weiss nicht ob das sehr fachmännisch ist, aber das Ding läuft bis jetzt klaglos.
Danke für deine Mühe.
Wilhelm

 

Beiträge aus den Excel-Beispielen zum Thema "Laufzeitfehler"