Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1004to1008
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

Fehler Nr. 13 ist aufgtreten! Typen unverträglich

Fehler Nr. 13 ist aufgtreten! Typen unverträglich
23.08.2008 11:03:00
Urs
Hallo an alle,
folgender Code generiert die Fehlermeldung "Fehler Nr. 13 ist aufgtreten! Typen unverträglich", sobald in einer anderen Spalte als der Spalte 11 versucht wird, eine Änderung vorzunehmen.
Läßt sich diese Fehlermeldung grundsätzlich komplett ausblenden oder automatisch überspringen?
In den Spalten 11 sollen Änderungen vorgenommen werden dürfen, nur soll dort kein Kommentar für die Zelle erzeugt werden.
Danke für Eure Hilfe!
Urs

Private Sub Worksheet_Change(ByVal Target As Range)
Dim str As String
Dim Zelle As Range
On Error GoTo Fehler
If Target.Column  11 And Target.Count > 1 Then Exit Sub
With Target
If .Comment Is Nothing Then
.AddComment "Erstellt am: " & Date & " - " & Time & Chr(10) & "Erster Eintrag: " & .Value &  _
"" _
/ " & Application.UserName"
Else
str = .Comment.Text & Chr(10)
.Comment.Text str & Chr(10) & "Geändert am: " & Date & " - " & Time & Chr(10) & "Änderung: " _
_
& .Value & " / " & _
Application.UserName
End If
.Comment.Shape.TextFrame.AutoSize = True
End With
'Auf Spalte mit Kundennummer prüfen
If Target.Column = 30 And Target.Row > 1 And Target.Cells.Count = 1 Then
Set Zelle = Target
Me.ComboBox1.Value = Target.Value
End If
GoTo Beenden
Fehler:
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
Beenden:
End Sub


24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträglich
23.08.2008 11:11:02
Nepumuk
Hallo Urs,
ändere diese Zeile:
If Target.Column <> 11 And Target.Count > 1 Then Exit Sub

so:
If Target.Column <> 11 Or Target.Count > 1 Then Exit Sub

Gruß
Nepumuk
Anzeige
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträgl
23.08.2008 11:25:51
Urs
Hallo Nepumuk,
danke für die schnelle Reaktion.
In den Spalten 11 lassen sich nun problemlos Änderungen vornehmen. Die Fehlermeldung erscheint nicht mehr. Allerdings taucht sie weiterhin bei den Zellen der Spalte 11 auf. Zudem wird für die Zellen dieser Spalte nicht wie gewünscht ein Kommentar erzeugt, sobald eine Änderung des Inhalts vorgenommen wird. Weißt Du weiter?
Urs
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträglich
23.08.2008 11:20:00
Daniel
Hi
diese Art der Fehlerbehandlung hat den grossen Nachteil, daß man nicht erfährt, wo der fehler auftritt.
laß mal das "On Error Goto Fehler" weg, dann erkennst du vielleicht eher, woran dein Problem liegt.
so hast du keine Chance, weil du nicht weißt, in welcher Zeile der Fehler passiert.
der Fehler kommt übrigends von falsch gesetzen Anführungszeichen in der Ziele mit .Add Comment. (einmal doppelt und einmal zuviel am Ende)
ußerdem würde ich mal darauf tippen, daß deine Prüflogik nicht ganz passend ist, wahrscheinlich meinst du nicht AND sondern OR.
Gruß, Daniel
Anzeige
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträglich
23.08.2008 11:21:00
Nepumuk
Nochwas,
dieser Part kann nie ausgeführt werden, da du die Sub verlässt, wenn die Eingabe nicht in Spalte K stattfindet:
'--------------------------------------------------------------------------
'Auf Spalte mit Kundennummer prüfen
If Target.Column = 30 And Target.Row > 1 And Target.Cells.Count = 1 Then
    Set Zelle = Target
    Me.ComboBox1.Value = Target.Value
End If
GoTo Beenden

Und der Fehler kommt auch nicht wegen der Abfrage, sondern wegen der verkorksten Add-Methode für den Kommentar. Außerdem ist Str ein Schlüsselwort in VB und sollte nicht für Variablennamen benutzt werden.
Versuch es mal so:
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim strValue As String
    Dim Zelle As Range
    
    On Error GoTo Fehler
    
    If Target.Column <> 11 Or Target.Count > 1 Then Exit Sub
    
    With Target
        If .Comment Is Nothing Then
            .AddComment "Erstellt am: " & Date & " - " & Time & Chr(10) & "Erster Eintrag: " & .Value & _
                " / " & Application.UserName
        Else
            strValue = .Comment.Text & Chr(10)
            .Comment.Text strValue & Chr(10) & "Geändert am: " & Date & " - " & Time & Chr(10) & "Änderung: " _
                & .Value & " / " & Application.UserName
        End If
        .Comment.Shape.TextFrame.AutoSize = True
    End With
    
    Exit Sub
    
    Fehler:
    MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
End Sub

Gruß
Nepumuk
Anzeige
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträgl
23.08.2008 11:49:00
Urs
Hallo Nepumuk,
habe Deinen Ansatz wohl noch nicht ganz verstanden. Bitte hilf' mir noch einmal.
Ich habe jetzt ein Modul eingefügt mit folgendem Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim strValue As String
Dim Zelle As Range
On Error GoTo Fehler
If Target.Column  11 Or Target.Count > 1 Then Exit Sub
With Target
If .Comment Is Nothing Then
.AddComment "Erstellt am: " & Date & " - " & Time & Chr(10) & "Erster Eintrag: " & . _
Value & _
" / " & Application.UserName
Else
strValue = .Comment.Text & Chr(10)
.Comment.Text strValue & Chr(10) & "Geändert am: " & Date & " - " & Time & Chr(10) & _
"Änderung: " _
& .Value & " / " & Application.UserName
End If
.Comment.Shape.TextFrame.AutoSize = True
End With
Exit Sub
Fehler:
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
End Sub


Den Code (im Ordner MS Excel Objekte im VB-Editor) für die Prüfung des zweiten Teils habe ich wieder in den Ursprungszustand zurückgesetzt:


Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
'Auf Spalte mit Kundennummer prüfen
If Target.Column = 30 And Target.Row > 1 And Target.Cells.Count = 1 Then
Set Zelle = Target
Me.ComboBox1.Value = Target.Value
End If
GoTo Beenden
Fehler:
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
Beenden:
End Sub


Anzeige
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträgl
23.08.2008 12:11:00
Ramses
Hallo
"...ich habe jetzt ein Modul eingefügt.."
Ich denke du solltest dich zuerst mit den VBA-Basics beschäftigen.
Der Teil "Worksheet_Change" gehört nicht in ein eigenes Modul, sondern in das Klassenmodul "DeineTabelle" wo das funktionieren soll, anstelle des bisherigen Codes.
Nimm einfach den Code von Nepumuk, kopiere ihn anstelle deines "angepassten" Codes und bau nicht selbst wieder rum
Gruss Rainer
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträgl
23.08.2008 13:14:00
Urs
Hallo Rainer,
ich habe gar nicht vor, selbst "rumzubauen". Mir ist nur nicht klar, wo in dem Code von Nepumuk die Abfrage auf die Spalte mit der Kundennummer versteckt ist.
Urs
Anzeige
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträgl
23.08.2008 13:19:00
Urs
Noch eine andere Frage:
Wie läßt sich das Kriterium 11 auf andere Spalten erweitern (11 Or xx)?
Danke für Eure Hinweise.
Urs
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträgl
23.08.2008 13:45:46
Nepumuk
Hallo Urs,
die hab ich rausgeworfen. Wenn du im Code eine Abfrage drin hast, mit welcher du das Programm abbrichst, wenn die Eingabe nicht in Spalte K stattfindet, dann ist eine mögliche Weiterverarbeitung von Eingaben in einer anderen Spalte für die Katz. Die wird nie ausgeführt.
Aber das habe ich schon geschrieben.
Wenn du Eingaben in verschiedenen Spalten unterschiedlich verarbeiten wilst, dann musst du entweder die If-Abfrage erweitern. Also mit ElseIf .... die anderen Spalten zulassen oder mit Select Case arbeiten. (Select Case ist aber langsamer !!!)
Gruß
Nepumuk
Anzeige
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträgl
24.08.2008 17:26:00
Urs
Hallo Nepumuk,
besten Dank für die Erläuterungen.
Wie könnte ein solcher Code mit ElseIf aussehen, wenn ich beispielsweise zusätzlich auch für Änderungen in Spalte 5 und 7 einen Zell-Kommentar (wie für Spalte 11) generiert haben möchte?
Gruß
Urs
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträgl
24.08.2008 20:44:00
Urs
Wäre der Code / fettgeschriebene Zeile für den zuvor genannten Fall (Spalten 5,7 und 11) so in Ordnung?
Urs

Private Sub Worksheet_Change(ByVal Target As Range)
Dim strValue As String
Dim Zelle As Range
On Error GoTo Fehler
   If Target.Column  5 And Target.Column  7 And Target.Column  11 Or Target.Count > 1  _
Then Exit Sub
With Target
If .Comment Is Nothing Then
.AddComment "Erstellt am: " & Date & " - " & Time & Chr(10) & "Erster Eintrag: " & . _
Value & _
" / " & Application.UserName
Else
strValue = .Comment.Text & Chr(10)
.Comment.Text strValue & Chr(10) & "Geändert am: " & Date & " - " & Time & Chr(10) & _
"Änderung: " _
& .Value & " / " & Application.UserName
End If
.Comment.Shape.TextFrame.AutoSize = True
End With
Exit Sub
Fehler:
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
End Sub


Anzeige
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträgl
24.08.2008 21:11:00
Jürgen
Hallo Urs,
wenn Dein Code laufen soll, wenn genau eine Zelle in Spalte 5, 7 oder 11 markiert ist, sollte der Code so lauten:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim strValue As String
Dim Zelle As Range
On Error GoTo Fehler
If (Target.Column  5 or Target.Column  7 or Target.Column  11) and Target.Count > 1   _
Then
With Target
If .Comment Is Nothing Then
.AddComment "Erstellt am: " & Date & " - " & Time & Chr(10) & "Erster Eintrag: " & . _
_
Value & _
" / " & Application.UserName
Else
strValue = .Comment.Text & Chr(10)
.Comment.Text strValue & Chr(10) & "Geändert am: " & Date & " - " & Time & Chr(10) & _
_
"Änderung: " _
& .Value & " / " & Application.UserName
End If
.Comment.Shape.TextFrame.AutoSize = True
End With
End if
Exit Sub
Fehler:
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
End Sub


Anzeige
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträgl
24.08.2008 21:36:07
Urs
Hallo Jürgen,
danke für Deine Antwort. Jetzt wird allerdings auch in Zellen anderer Spalten (außer 5,7 und 11) ein Kommentar eingefügt. Weißt Du Rat?
Urs
AW: Fehler Nr. 13 ist aufgtreten! Typen unverträgl
25.08.2008 10:33:50
Jürgen
Hallo Urs,
es muss natürlich lauten:
If (Target.Column = 5 or Target.Column = 7 or Target.Column = 11) and Target.Count > 1
Gruß, Jürgen
Korrektur der Korrektur
25.08.2008 13:03:51
Jürgen
Hallo Urs,
nun sollte es richtig sein:
If (Target.Column = 5 or Target.Column = 7 or Target.Column = 11) and Target.Count = 1
Gruß, Jürgen
AW: Korrektur der Korrektur
25.08.2008 15:15:30
Urs
Danke Jürgen.
Allerdings wird bei
Target.Count GLEICH 1
kein Kommentar erzeugt, nur bei
Target.Count GRÖSSER 1
Offenbar läuft die Generierung eines Kommentars auch nicht bei Zellen, in denen Formeln bzw. Makros hinterlegt sind. Kann das sein?
Danke für eine erneute Rückmeldung.
Urs
Anzeige
AW: Korrektur der Korrektur
25.08.2008 20:03:17
Jürgen
Hallo Urs,
kann es sein, dass Du meine letzte Korrektur noch nicht berücksichtigt hast? Wenn doch, stell doch bitte nocheinmal den aktuellen Code ein.
Gruß, Jürgen
AW: Korrektur der Korrektur
25.08.2008 22:46:00
Urs
Hallo Jürgen,
hier noch einmal der aktuelle Code. Danke für Deine Hilfe.
Urs

Private Sub Worksheet_Change(ByVal Target As Range)
Dim strValue As String
Dim Zelle As Range
On Error GoTo Fehler
If (Target.Column = 5 or Target.Column = 7 or Target.Column = 11) and Target.Count = 1 Then  _
Exit Sub
With Target
If .Comment Is Nothing Then
.AddComment "Erstellt am: " & Date & " - " & Time & Chr(10) & "Erster Eintrag: " & . _
Value & _
" / " & Application.UserName
Else
strValue = .Comment.Text & Chr(10)
.Comment.Text strValue & Chr(10) & "Geändert am: " & Date & " - " & Time & Chr(10) & _
"Änderung: " _
& .Value & " / " & Application.UserName
End If
.Comment.Shape.TextFrame.AutoSize = True
End With
Exit Sub
Fehler:
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
End Sub


AW: Korrektur der Korrektur
26.08.2008 09:41:26
Jürgen
Hallo Urs,
das ist auch nicht der Code, den ich Dir vorgeschlagen hatte, denn der enthielt nicht nur eine geänderte Bedingung, sondern verzichtete auch auf das unschöne "Exit Sub", oder anders, bei Zutreffen der von mir formulierten Bedingung soll der Code ausgeführt statt beendet werden. Es sollte also so lauten:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim strValue As String
Dim Zelle As Range
On Error GoTo Fehler
If (Target.Column = 5 Or Target.Column = 7 Or Target.Column = 11) And Target.Count = 1 Then
With Target
If .Comment Is Nothing Then
.AddComment "Erstellt am: " & Date & " - " & Time & Chr(10) & "Erster Eintrag: " & . _
_
Value & _
" / " & Application.UserName
Else
strValue = .Comment.Text & Chr(10)
.Comment.Text strValue & Chr(10) & "Geändert am: " & Date & " - " & Time & Chr(10) & _
_
"Änderung: " _
& .Value & " / " & Application.UserName
End If
.Comment.Shape.TextFrame.AutoSize = True
End With
End If
Exit Sub
Fehler:
MsgBox "Fehler Nr. " & Err.Number & " ist aufgtreten!" & vbLf & vbLf & Err.Description
End Sub


Gruß, Jürgen

AW: Korrektur der Korrektur
26.08.2008 20:39:11
Urs
Hallo Jürgen,
war wohl ein Mißverständnis meinerseits.
Jetzt läuft der Code bis auf eine Ausnahme hervorragend!
In den Zellen der Spalte 7 ist ein SVERWEIS hinterlegt. Hier wird trotz des Codes kein Kommentar erzeugt.
Ist das richtig? Oder gibt es hier auch einen "Trick"?
Viele Grüße
Urs
AW: Korrektur der Korrektur
26.08.2008 22:09:16
Jürgen
Hallo Urs,
das Worksheet_Change-Ereignis wird nicht ausgelöst, wenn ein Formelergebnis (z.B. SVerweis) aktualisiert wird.
Gruß, Jürgen
AW: Korrektur der Korrektur
27.08.2008 08:04:00
Urs
Danke Dir, Jürgen.
Wieder 'was gelernt!
Gibt es vielleicht trotzdem eine Möglichkeit, auch für solche Zellen die Generierung eines Kommentars zu programmieren?
Gruß
Urs
AW: Korrektur der Korrektur
27.08.2008 11:25:47
Urs
... eventuell mit einem Calculate-Ereignis?
AW: Korrektur der Korrektur
27.08.2008 23:20:57
Jürgen
Hallo Urs,
das Calculate-Ereignis liefert aber nicht die Zellen, deren Inhalt sich durch die letzte Neuberechnung geändert haben - aus nachvollziehbaren Gründen, wie ich denke.
Wenn ich Deine Aufgabenstellung richtig verstanden habe, möchtest Du festhalten, wer wann Änderungen vorgenommen hat. Formelergebnisse ändern sich, wenn die Zellen geändert werden, auf die sie sich beziehen. Wenn Du deren Änderung bereits dokumentierst, wozu dann noch die Änderung des Formelergebnisses?
Gruß, Jürgen

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige