Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Laufzeitfehler 13 - Typen unverträglich
30.05.2008 13:55:21
onkelbobby
Hi,
habe in einer Tabelle per Markro drei Komboboxen positioniert.
Bislang lief alles reibungslos. Jetzt kommt immer, wenn ich die Tabelle aktiviere kommt immer Laufzeitfehler 13 - Typen unverträglich.
Folgendes Makro:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim varMerker1 As Variant, varMerker2 As Variant, varMerker3 As Variant
Dim lngIndex As Long
If Target.Row "größer" 3 And Target.Cells.Count = 1 Then
Select Case Target.Column
Case 1
varMerker1 = Target.Value
varMerker2 = Target.Offset(0, 1).Value
varMerker3 = Target.Offset(0, 3).Value
Me.ComboBox2.Visible = False
Me.ComboBox3.Visible = False
With Me.ComboBox1
.Top = Target.Offset(1, 0).Top
.Left = Target.Left
.LinkedCell = Target.Address
If varMerker1 "" Then
For lngIndex = 0 To .ListCount - 1
If .List(lngIndex, 0) = varMerker1 And _
.List(lngIndex, 1) = varMerker2 And _
.List(lngIndex, 3) = varMerker3 Then

.ListIndex = lngIndex
Exit For
End If
Next
Else
.ListIndex = -1
End If
.Visible = True
End With
Case 17 ...
Markierte Zeilen nach Debuggen habe ich fett markiert.
Gibts irgendwelche Tips für mich?
P.S.: Scheinbar kann hier kein "Größer"Zeichen egeschrieben werden. Habe deshalb im Code auch "größer" ausgeschrieben.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 13 - Typen unverträglich
30.05.2008 14:48:00
Renee
Hi Bob,
Von hinten nach vorne: Scheinbar kann hier kein "Größer"Zeichen egeschrieben
Doch! Packe Code mit dem

Zitat 

ein.
Zu dem Code:
1. Was bezweckst du mit dem Code?
2. Ein Combo/Listbox Listen enthalten grundsätzlich Daten vom Typ String. Zellen können Double oder StringWerte enthalten.
3. Hat deine ComboBox1 wirklich eine .ColumnCount von 4 ?
4. Was ist mit der 3ten Kolonne in der ComboBox1 ?
GreetZ Renée

AW: Laufzeitfehler 13 - Typen unverträglich
30.05.2008 15:12:00
onkelbobby
Danke für Dein Antwort!
Den Code habe ich mal erhalten, nachdem ich mein Vorhaben geschildert hatte.
In der Combobox tauchen Werte aus einer anderen Tabelle auf, die dort nach Spalte 3 sortiert werden. Die Combobox hat insgesamt sogar Column Count 12
So ganz genau durchschaue ich den Code auch nicht.
Habe jetzt aber mal
varMerker3 = Target.Offset(0, 3).Value
und
And _
.List(lngIndex, 3) = varMerker3
gelöscht.
Jetzt funktionierts wieder. Weiss aber ehrlich gesagt auch nicht so genau, was dahinter steckt. Hoffe da fehlt jetzt nichts (die Combobox wird ein einem anderen Code mit Daten gefüllt). Kann mir jemand sagen, was hinter diesem Code steckt?

Anzeige
Habe mal deinem Wunsch entsprochen...
01.06.2008 19:06:00
Luc:-?
...und dein Originalpgm mit Kommentaren versehen, Bobby...

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Target=Zielzelle
Dim varMerker1 As Variant, varMerker2 As Variant, varMerker3 As Variant, _
lngIndex As Long
If Target.Row > 3 And Target.Cells.Count = 1 Then    'Auswahlzeile und -zellenanzahl
Select Case Target.Column    'Auswahl-Spaltennr
Case 1                                            'Zelle in Spalte A ausgewählt
varMerker1 = Target.Value         '→ Wert d.Auswahlzelle
varMerker2 = Target.Offset(0, 1).Value '→ Wert d.1.Folgespaltenzelle d.Auswahl
varMerker3 = Target.Offset(0, 3).Value '→ Wert d.3.Folgespaltenzelle d.Auswahl
Me.ComboBox2.Visible = False    'ComboBox2 → unsichtbar
Me.ComboBox3.Visible = False    'ComboBox3 → unsichtbar
With Me.ComboBox1
.Top = Target.Offset(1, 0).Top 'ObKante CBox1 lt Folgezeilen-ObKante
.Left = Target.Left                    'LiKante CBox1 lt 1.Auswahlzelle-LiKante
.LinkedCell = Target.Address   'CBox1-verbundZelle → 1.Auswahlzelle
If varMerker1  "" Then         'wenn Auswahlzelle1 nicht leer ist...
For lngIndex = 0 To .ListCount - 1 'IngIndex zählt lt CBox1-Listenzähler
If .List(lngIndex, 0) = varMerker1 And _
.List(lngIndex, 1) = varMerker2 And _
.List(lngIndex, 3) = varMerker3 Then 'Vgl CBox1- m.AuswInhalt
.ListIndex = lngIndex       'CBox1-ListIdx auf IngIdx gesetzt
Exit For    'Afg eledigt → kein weit DLauf erforderlich
End If
Next lngIndex
Else: .ListIndex = -1       'wenn Auswahlzelle1 leer ist...
End If
.Visible = True                'CBox1 → sichtbar
End With
Case 17                                 'Zelle in Spalte Q ausgewählt
End Select
End If
End Sub


Schau mal, ob ein ComboBox-ListIndex vom Typ Long sein darf (sollte allerdings nur bei zu großen Indizes Probleme bereiten) bzw ob ein varMerker leer ist. Das sollte stets Probleme bereiten, weil dann wohl die automatische Typumrechnung nicht klappt. Sinnvoller ist es, stets Variablen gleichen Datentyps miteinander zu vgl. Variant lässt auch leer zu, Long würde leer als 0 interpretieren. Indizes dürfen aber nicht leer sein! Deshalb wohl Fehler 13!
Gruß Luc :-?
PS: Das Forum ist voll HTML-fähig, d.h., du kannst auch die entsprechenden Tags verwenden und bist nicht auf HWH's "Tilde f Tilde"-Tag für Formeldarstellung angewiesen. In HTML kann man bspw > mit "& gt ;" darstellen, < analog mit lt (greater bzw lesser than). Der PgmCode steht hier zwischen <pre> und </pre>.

Anzeige

146 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige