Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1028to1032
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
Inhaltsverzeichnis

Worksheet_Change-Problem

Worksheet_Change-Problem
26.11.2008 16:59:00
Dysti
Hallo,
habe folgendes Problem:
Der unten stehende Code meines Macros verursacht eine Typenunverträglichkeit in der Zeile "trenner=..."
Es entsteht nur dann, wenn ich die gefüllte Zellen mit der Maus markieren und rechte Maustaste "Inhalte löschen" anklicke.
Funktion: schreibe 100/8 und er ändert es in 100/2008

Private Sub Worksheet_Change(ByVal Zelle As Range)
Dim trenner As Byte
Dim jahreseingabe As Variant
Application.EnableEvents = False
'welche Position hat das Zeichen "/"
trenner = InStr(1, Zelle, "/")
MsgBox trenner
If trenner > 0 Then
If Left(Right(Zelle, 2), 1) = 0 Then
jahreseingabe = Left(Zelle, trenner) + "200" + Right(Zelle, 1)
Else
jahreseingabe = Left(Zelle, trenner) + "200" + Right(Zelle, 1)
End If
Zelle.Value = jahreseingabe
Zelle.HorizontalAlignment = xlRight
End If
Application.EnableEvents = True
End Sub


4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change-Problem
26.11.2008 17:08:35
Luschi
Hallo Dusti,
der Übergabeparameter in der Ereignisfunktion heißt 'Target' und nicht 'Zelle'.
Auch wenn es Standardwerte bei nicht angegebenen Parametern in Vba-Funktionen gibt, sollte man der besseren Lesbarkeit und Korrigierbarkeit sie aufführen:
trenner = InStr(1, Target.Value, "/", vbTextCompare)
Gruß von Luschi
aus klein-Paris
AW: Worksheet_Change-Problem
26.11.2008 17:45:00
Dysti
Hallo Luschi,
habe immer noch die Fehlermeldung
AW: Worksheet_Change-Problem
26.11.2008 19:50:00
Erich
Hallo Vorname(?),
probier mal

Private Sub Worksheet_Change(ByVal Zelle As Range)
Dim trenner As Long           ' InStr liefert einen Long-Wert
Dim jahreseingabe As String   ' besser nicht Variant
Application.EnableEvents = False
' Erklärung in der VBA-Hilfe zu VarType
MsgBox "Typ: " & VarType(InStr(1, Zelle, "/"))
trenner = InStr(1, Zelle, "/")   'welche Position hat das Zeichen "/"
MsgBox trenner
If trenner > 0 Then
If Left(Right(Zelle, 2), 1) = 0 Then
jahreseingabe = Left(Zelle, trenner) + "200" + Right(Zelle, 1)
Else
jahreseingabe = Left(Zelle, trenner) + "200" + Right(Zelle, 1)
End If
Zelle.Value = jahreseingabe
Zelle.HorizontalAlignment = xlRight
End If
Application.EnableEvents = True
End Sub

@Luschi:
Ob der Parameter Target oder Zelle heißt, ist völlig egal. Wir haben uns nur so schön an Target gewöhnt...
Trotzdem: Wegen der Gebräuchlichkeit ist Target natürlich vorzuziehen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Richtig,...
27.11.2008 02:01:00
Luc:-?
...Erich,
aber das Hptargument für Target ist, dass das voreingestellt ist und deshalb automatisch erzeugt wird/wdn kann.
Auch Luschi's 2.Forderung halte ich für überzogen. Für Instr gibt's nun mal 2 Argumentierungsformen. Dann muss man auch erwarten können, dass beide fkt und auch gut unterscheidbar sind. Habe auch selbst schon udFs pgmiert, die eine gewisse Freizügigkeit bei der Argumentreihenfolge zulassen.
Gruß Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige