Laufzeitfehler ......

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Laufzeitfehler ......
von: Nancy
Geschrieben am: 31.05.2002 - 08:58:51

Hallo!

Menno....jetzt hab ich hier sooo gute Hilfe bekommen....alles Funktioniert..und jetzt hab ich beim Löschen von Zellen in einem Tabellenblatt immer folgende Fehlermeldung:
Laufzeitfehler 13 'Typen unverträglich'
Was er anmeckert is das hier:
If Target.Column <> 1 Or Target.Value = "" Then

Und beim schließen der Arbeitsmappe hab ich auch oft solche Meldungen....dabei funktioniert sonst alles ziemlich gut.

Kann mir jemand sagen wie ich die Fehlermeldungen am besten wegkriege....und woran es liegen könnte??????
Bestimmt schwierig ohne zu sehen was ich da alles drin hab....oder????

Gruss Nancy

nach oben   nach unten

Re: Laufzeitfehler ......
von: Hans W. Herber
Geschrieben am: 31.05.2002 - 09:11:18

Hallo Nancy,
setze als erste Codezeile - ich vermute mal, dass es hier um das Change-Ereignis geht - ein:
If IsEmpty(Target) then Exit Sub

hans

nach oben   nach unten

Re: Laufzeitfehler ......
von: Nancy
Geschrieben am: 31.05.2002 - 09:23:47

Hm....hab ich gerade versucht....wahrscheinlich hab ich aber selbst dabei was falsch gemacht(ANFÄNGER!!)

Das hier is das komplette:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim doppel
If Target.Column <> 1 Or Target.Value = "" Then Exit Sub
If WorksheetFunction.CountIf(Columns(1), Target.Value) > 1 Then
Target.Select
doppel = InputBox("Folgender Matchcode bereitsvorhanden:" & Target.Value, "Achtung")
If doppel = Target.Value Then
Target.ClearContents
Else
Target.Value = doppel
End If
End If

End Sub

Danke für die Hilfe!

Gruss Nancy

nach oben   nach unten

Re: Laufzeitfehler ......
von: Hans W. Herber
Geschrieben am: 31.05.2002 - 09:28:11

... mein Fehler, ma soll nix ungetestet rauslassen.
Als erste Codezeile:
If Target.Cells.Count > 1 Then Exit Sub

hans

nach oben   nach unten

Re: Laufzeitfehler ......
von: Nancy
Geschrieben am: 31.05.2002 - 09:49:31

Danke!!!
Funktioniert!!!

Hab aber leider noch ein Problem :-(

Ich habe ein Tabellenblatt wo ein sog. Matchcode eingegeben wird.
z.B.:
SpalteA: AB2003 (Matchcode)
SpalteB: 102
SpalteC: 203
SpalteD: 22
SpalteE: 100

Diese Meldung ist dazu da damit keine doppelten Einträge in SpalteA eingegeben werden.
Entweder gebe ich also einen anderen Wert ein...oder ich klicke auf abbrechen und es wird nichts eingegeben.
Das funktioniert jetzt (dank Ihrer Hilfe) sehr gut.

In einem anderen Tabellenblatt habe ich eine ComboBox wo dieser Matchcode ausgewählt werden, oder ein neuer Matchcode eingegeben werden kann.
Dort gibt es auch 4 Zellen zum eingeben der zu dem Matchcode zugehörigen Zahlen und einen CommandButton zum Speichern eines neuen Matchcodes.
Gespeichert wird dann also der Matchcode, und die dazu gehörenden Eingaben aus 4 Zellen.

In dem Tabellenblatt wo dieser Matchcode gespeichert wird, bleibt nach klicken auf Abbrechen in der InputBox nun die erste Spalte leer...so wie es sein soll....aber die Eingaben aus den 4 Zellen des Tabellenblatts werden trotzdem eingetragen. (Was ja nicht sein soll)

Wie....und wo kann ich das ändern???

Gruss Nancy

Danke noch mal für die Lösung!!!

nach oben   nach unten

Re: Laufzeitfehler ......
von: Hans W. Herber
Geschrieben am: 31.05.2002 - 09:57:51

Hallo Nancy,

die Sache ist mir absolut unklar. Wenn die Codezeilen mit dem Befehl, die Zellen zu füllen nach dem Aufruf der InputBox stehen, setze unmittelbar nach dem Aufruf eine Zeile mit:
If vInput = "" then End
Damit wird das Programm absolut beendet.

Möglicherweise habe ich Dich aber auch falsch verstanden.

hans

nach oben   nach unten

Re: Laufzeitfehler ......
von: Nancy
Geschrieben am: 31.05.2002 - 10:04:20

Der Befehl die Zellen zu füllen steht ganz woanders:

Sub Test()
Dim TestArray(1 To 5) As Variant
Dim Zeile As Single
Dim Nummer As Variant
Dim i As Byte
Worksheets("Druck").Activate
TestArray(1) = ComboBox1.Text
TestArray(2) = ActiveSheet.Cells(7, 5).Value
TestArray(3) = ActiveSheet.Cells(10, 5).Value
TestArray(4) = ActiveSheet.Cells(7, 12).Value
TestArray(5) = ActiveSheet.Cells(10, 12).Value

Worksheets("P-Tabelle").Activate
For Zeile = 4 To 65536
If ActiveSheet.Cells(Zeile, 1).Value = "" Then
Exit For
End If
Next Zeile

For i = 1 To 5
ActiveSheet.Cells(Zeile, i).Value = TestArray(i)
Next i


Worksheets("Druck").Activate
ComboBox1.SelText = TestArray(1)
End Sub


Private Sub CommandButton9_Click()
Call Test
End Sub

Wenn ich diesen Befehl aufrufe und den Matchcode (in der ComboBox) gibt es schon dann erscheint die Meldung mit der InputBox.
Beim Abbrechen wird dann der Eintrag der ComboBox nicht mehr übernommen.......der Rest aber...was nicht sein soll.

Hoffe jetzt hab ich mich ein bisschen deutlicher ausgedrückt.

Gruss Nancy

nach oben   nach unten

Re: Laufzeitfehler ......
von: Hans W. Herber
Geschrieben am: 31.05.2002 - 10:10:25

... wenn die InputBox nach dem Makro "Test" aufgerufen wird, wurden die Einträge ja bereits vorgenommen und müßten dann rückgängig gemacht werden.

hans


nach oben   nach unten

Re: Laufzeitfehler ......
von: Nancy
Geschrieben am: 31.05.2002 - 11:00:57

Ja...und genau das versuch ich gerade....ohne Erfolg :-(
Wie mache ich denn das Makro "Test" rückgängig wenn man in der InputBox auf Abbrechen klickt? Und wo?

Ich kriegs nicht hin.

Gruss Nancy

nach oben   nach unten

ok...hat sich erledigt
von: Nancy
Geschrieben am: 31.05.2002 - 11:38:30

Ich habs :-)
 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Laufzeitfehler ......"