Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
VBA Laufzeitfehler 13 Typen unverträglich
#1
Hallo,

ich bin neu hier und Grüße euch alle.

Ich habe Microsoft 365. Ich habe einen VBA Code, der eigentlich einwandfrei das tut was ich möchte, 
doch gibt es trotzdem ein Problem mit der Laufzeit.

Mein Code fügt bei Klick auf einen Namen im Bereich B9:G14 in eine untere Liste ab B18 Werte ein. Funktioniert soweit auch gut.

Aber soblad ich irgendwo im Tabellenblatt zwei Zellen versehentlich markiere, oder zwei Zellen verbinden möchte 
gibt es eine Fehlermeldung. Laufzeitfehler 13, Typen unverträglich.

Egal ob ich auf dem Tabellenblatt in den Tabellen oder in leeren geschützen Zellen zwei markiere, die Meldung kommt immer.

Hier mein Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rng As Range
Set rng = Range("B9:G9") ' Der zu überwachende Zellenbereich
Set rng = Union(rng, Range("B10:G14"))

If Not Intersect(Target, rng) Is Nothing And Target.Value <> "" Then
    Application.EnableEvents = False ' Events deaktivieren, um eine Endlosschleife zu vermeiden

    Me.Unprotect ' Arbeitsblattschutz aufheben

    With Range("B" & Rows.Count).End(xlUp).Offset(1) ' Nächste leere Zeile in Spalte B suchen
        .Value = Target.Value ' Zelleninhalt ab B18 einfügen
        .Offset(0, 1).Value = Date ' Aktuelles Datum in Spalte C einfügen
    End With

    With Range("A" & Rows.Count).End(xlUp).Offset(0) ' Nächste leere Zelle in Spalte A ab Zeile 18 suchen
        .Value = Application.UserName ' Application.UserName in Zelle A einfügen
    End With

    Me.Protect ' Arbeitsblatt wieder sperren
    Application.EnableEvents = True ' Events wieder aktivieren
End If
End Sub


Ich habe es auch schon so versucht, aber dann werden die Namen nichtmehr in die Tabelle eingetragen:

If Not Intersect(Target, rng) Is Nothing And Target.Value Is Not Nothing Then
Application.EnableEvents = False

Wäre für eine Lösung dankbar.

LG RudiRatlos
Zitieren
#2
das Problem könnte sein, das dein Code nicht darauf ausgelegt ist, das Target auch mehrere Zellen sein können.

if target.count >1 then exit sub könnte das beheben.
Zitieren
#3
(15.09.2023, 21:03)ralf_b schrieb: if target.count >1 then exit sub  könnte das beheben.

Es könnte aber auch die Err.Number von 13 auf 6 (Überlauf) switchen.  Angel
Ich nehme ja lieber If Target.CountLarge

Gruß Ralf
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions