![]() |
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
![]() |