Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

Laufzeitfehler 13 - Typen unverträglich

Betrifft: Laufzeitfehler 13 - Typen unverträglich von: Erwin
Geschrieben am: 06.08.2014 20:56:55

Hallo Forum,
ich habe eine Auswahlliste (Userform1) aus einer anderen Anwendung übernommen, auf die neuen Namen angepasst und möchte diese aufrufen.
Leider erscheint Laufzeitfehler 13 - Typen unverträglich.
Ich glaube, ich habe den Fehler auch gefunden (s. Kommentar), weis aber nicht, wie ich ihn beheben kann.
https://www.herber.de/bbs/user/91942.xlsm
Wer kann mir bitte weiterhelfen?
Grüße - Erwin

  

Betrifft: AW: Laufzeitfehler 13 - Typen unverträglich von: Daniel
Geschrieben am: 06.08.2014 21:03:57

Hi
man sollte doch einfach ab und zu mal in der Hilfe lesen, da steth zu IIF folgende Bemerkung:
Bemerkungen

IIf wertet immer sowohl den Teil truepart als auch den Teil falsepart aus, auch dann, wenn nur einer von beiden Teilen zurückgegeben wird. Aus diesem Grund kann es zu unerwünschten Nebeneffekten kommen. Wenn z.B. die Auswertung von falsepart zu einem Fehler aufgrund einer Division durch Null führt, tritt ein Fehler auch dann auf, wenn expr den Wert True hat.

sprich: um Fehler abzufangen ist IIF nicht geeignet !!!
hier muss dann ein normales IF - THEN - ELSE ran:

If IsNumeric(.List(a)) Then
    vWerta = CDbls(.List(a))
Else 
    vWertaa = .List(a)
End If
Gruß Daniel


  

Betrifft: AW: Laufzeitfehler 13 - Typen unverträglich von: Erwin
Geschrieben am: 06.08.2014 21:47:44

Hallo Daniel,
danke für die schnelle Hilfe; jetzt bekomme ich auch die UF auf und ich kann etwas auswählen.
Leider kommt ein weiterer Fehler bei:
'Spalte 1 - 5 = Spalte A; b; C, D, E in anderes Blatt ab Spalte A einfügen
shMitarbeiterliste.Range(Cells(gZeile, 1), Cells(gZeile, 5)).Copy Destination:=shAltersstruktur.Cells(eZeile, 1) _
'Spalte 8 - 11 = Spalte H, I, J , K in andees Blatt ab Spalte F einfügen
shMitarbeiterliste.Range(Cells(gZeile, 8), Cells(gZeile, 11)).Copy Destination:= _
shAltersstruktur.Cells(eZeile, 6)
eZeile = eZeile + 1: cnt = cnt + 1

Laufzeitfehler 1004 - Die Methode "Range für das Objekt '_Worksheet' ist fehlgeschlagen.

Außerdem wenn ich etwas in Spalte C auswähle, was tatsächlich vorhanden ist, kommt nichts in Spalten D und E ähnlich.

Kann das noch jemand bitte prüfen?

Danke - Erwin


  

Betrifft: AW: Laufzeitfehler 13 - Typen unverträglich von: Daniel
Geschrieben am: 06.08.2014 21:59:15

will man bei Range(Cells(), Cells()) ein bestimmtes Tabellenblatt ansprechen, so muss die Tabellenblattangabe immer vor den beiden Cells stehen:
Range(Sheets().Cells(), Sheets().Cells())

Steht der Code in einem Tabellenblattmodul, muss die Sheetangabe zusätzlich vor der Range erscheinen:
Sheets().Range(Sheets().Cells(), Sheets().Cells())

dass es sich hierbei immer um das selbe Sheet handeln muss, sollte selbstverständlich sein.

Gruß Daniel


  

Betrifft: AW: Laufzeitfehler 13 - Typen unverträglich von: Erwin
Geschrieben am: 06.08.2014 22:30:39

Hallo Daniel,
danke für den Tipp, aber mit meinen VBA Kenntnissen ist das nur try an error.
Ich verstehe ja, dass du mit deinen Hilfen, mir auf die Sprünge helfen willst, damit ich es künftig selbst kapiere, aber ich komme nicht weiter.

Hier mein Versuch, der natürlich gescheitert ist.

'Kopierbereich
'Spalte 1 - 5 = Spalte A; b; C, D, E in anderes Blatt ab Spalte A einfügen
'Spalte 8 - 11 = Spalte H, I, J , K in andees Blatt ab Spalte F einfügen
shMitarbeiterliste.Range(Cells(gZeile, 1), shMitarbeiterliste.Cells(gZeile, 5)).Copy Destination:=shAltersstruktur.Cells(eZeile, 1)
shMitarbeiterliste.Range(Cells(gZeile, 8), shMitarbeiterliste.Cells(gZeile, 11)).Copy Destination:=shAltersstruktur.Cells(eZeile, 6)
eZeile = eZeile + 1: cnt = cnt + 1

Da ich früh aufstehen muss, ist heute für mich Schluss.
Vielleicht kannst du das ganze ja nochmal ansehen und ein paar Minuten investieren, um es lauffähig zu machen.
Ich würde mich sehr freuen, wenn du mir eine entsprechende Datei zur Verfügung stellen könntest.

Danke und gute Nacht - Erwin


  

Betrifft: AW: Laufzeitfehler 13 - Typen unverträglich von: Daniel
Geschrieben am: 06.08.2014 22:52:59

hi
naja, es sollte nicht so schwer sein, das Tabellenblatt vor BEIDEN Cells innererhalb der Range hinzuzufügen.
Wenn du es vor einem geschafft hast, dann ist das zweite doch Kinderkram.
Ist ja im Prinzip das gleiche, nur noch einmal.

Gruß Daniel


  

Betrifft: AW: Laufzeitfehler 13 - Typen unverträglich von: Erwin
Geschrieben am: 07.08.2014 06:19:56

Guten Morgen Daniel,
danke für den Tipp, aber wenn du mein VBA Level ansiehst, kannst du sicher erkennen, dass das so nichts wird.
Ich versuche schon wieder seit einer halben Stunde das umzusetzen, was du angedeutet hast, leider ohne Erfolg.
'Kopierbereich
'Spalte 1 - 5 = Spalte A; b; C, D, E in anderes Blatt ab Spalte A einfügen
'Spalte 8 - 11 = Spalte H, I, J , K in andees Blatt ab Spalte F einfügen
sh(Mitarbeiterliste).Range(Mitarbeiterliste().Cells(gZeile, 1), shMitarbeiterliste().Cells(gZeile, 5)). _
Copy Destination:=shAltersstruktur.range(Altersstruktur().Cells(eZeile, 1) _
sh(Mitarbeiterliste).Range(Mitarbeierliste().(Cells(gZeile, 8), shMitarbeiterliste().Cells(gZeile, 11)). _
Copy Destination:=shAltersstruktur.range(Altersstruktur().Cells(eZeile, 6)
eZeile = eZeile + 1: cnt = cnt + 1

Ich habe keine Ahnung, wie das gehen soll - und die Zeit habe ich auch nicht, jede Kombination auszuprobieren.
Vielleicht kannst du mir ja die Fehler richten und die Datei mal selbst ausprobieren?
Danke - Grüße - Erwin


  

Betrifft: AW: Laufzeitfehler 13 - Typen unverträglich von: EtoPHG
Geschrieben am: 07.08.2014 08:55:09

Hallo Erwin,

Wenn etwas wichtig ist und man unter Zeitdruck steht, muss man langsam machen!
Nur so kommt man schneller zum Ziel.
Würdest du die Vorschläge lesen und verstehen und sorgfältig umsetzen, sähest du schnell, dass shAltersstruktur wohl nicht das Gleich ist wie Altersstruktur().

Gruess Hansueli


  

Betrifft: AW: Laufzeitfehler 13 - Typen unverträglich von: Erwin
Geschrieben am: 07.08.2014 10:42:26

Hallo Hansueli,
danke für deine Ausführungen; dabei kommt so etwas heraus, was natürlich auch nicht geht.

'Mitarbeiterliste().Range(Mitarbeiterliste().Cells(gZeile, 1), Mitarbeiterliste().Cells(gZeile, 5)). _
'Copy Destination:=Altersstruktur().range(Altersstruktur().Cells(eZeile, 1) _
'Mitarbeiterliste().Range(Mitarbeierliste().(Cells(gZeile, 8), Mitarbeiterliste().Cells(gZeile, 11)). _
'Copy Destination:=Altersstruktur.range(Altersstruktur().Cells(eZeile, 6)

oder auch so was

shMitarbeiterliste.Range(Cells(gZeile, 1), shMitarbeiterliste.Cells(gZeile, 5)).Copy Destination:=Altersstruktur.Cells(eZeile, 1)
shMitarbeiterliste.Range(Cells(gZeile, 8), shMitarbeiterliste.Cells(gZeile, 11)).Copy Destination:=Altersstruktur.Cells(eZeile, 6)

Wie soll ich das hinkriegen, wenn ich aufgrund meines VBA Levels nur mit try and error das versuche.
Ich verstehe euch Profis auch, ihr wollt, dass die Unwissenden auch etwas lernen, aber im Moment bin ich da weit weg.

Wie gesagt, es wäre toll, wenn jemand die richtigen Zeilen posten könnte.

Vielen Dank euch allen
Erwin


  

Betrifft: Mensch, Erwin, ist das denn so schwer?! von: Luc:-?
Geschrieben am: 07.08.2014 13:03:51

Dir wurde doch gesagt, jedes Auftreten von Cells muss mit der Variable verbunden wdn, die das jeweilige Blatt referenziert/repräsentiert, also …
shMitarbeiterliste.Range(shMitarbeiterliste.Cells(gZeile, 1), shMitarbeiterliste.Cells(gZeile, 5))
Alternativ kannst du das natürlich auch in ein With-Konstrukt einbetten …

With shMitarbeiterliste
    .Range(.Cells(gZeile, 1), .Cells(gZeile, 5))
End With
Von Jemandem, der partout mit VBA arbeiten will, muss man schon erwarten können, dass er sich auch mit den VBA-Grundlagen befasst, zB mal was in der VBEditor-Hilfe nachliest. Wie lange willst du sonst mit der Trial'n'Error-Methode brauchen?! Das ist dann doch wie „Stochern im Nebel“!
Gruß, Luc :-?

Besser informiert mit …


  

Betrifft: AW: Laufzeitfehler 13 - Typen unverträglich von: Daniel
Geschrieben am: 07.08.2014 13:08:04

Hi Erwin:

ich habe dir geschrieben, dass du das Tabellenblatt vor den beiden Cells innerhalb der Range-Funktion angeben sollst.

du hast jetzt das Tabellenblatt vor dem zweiten Cells hinzugefügt, aber nicht vor dem ersten.
Was hat dich veranlasst so zu handeln?

richtig wäre es so (in den anderen Zeilen natürlich genauso):
shMitarbeiterliste.Range(shMitarbeiterliste.Cells(gZeile, 1), shMitarbeiterliste.Cells(gZeile, 5)).Copy

Gruß Daniel


  

Betrifft: Danke von: Erwin
Geschrieben am: 07.08.2014 13:56:02

Hallo Zusammen,

ich danke euch allen für euere Geduld.
Wie es immer so ist, möchte der Chef schnell etwas gelöst haben, was ich halt nicht kann, weil ich es nicht gelernt habe.
In anderen Fälle, in denen ihr mir alle sehr geholfen habt, wurde dann schon mal ein kompletter Code gepostet...
Super, dass es das Forum und die aktiven Antworter gibt.
Grüße - Erwin


  

Betrifft: Warum machst du es dann? Außerdem ... von: Luc:-?
Geschrieben am: 07.08.2014 14:30:28

…scheinst du in einer solchen Situation schnell in Panik zu geraten, Erwin,
was einer schnellen Lösungsfindung idR entgegen steht (s. H-ueli!). ;->
Bedenke bitte, dass ein Forum weder hausaufgaben.de ist noch sein kann!
Luc :-?


  

Betrifft: AW: Warum machst du es dann? Außerdem ... von: Erwin
Geschrieben am: 07.08.2014 14:45:45

Hallo Luc :-?,
um auf deine Frage zu antworten - weil es mich durchaus interessiert.
Nur - manchmal habe ich mehr Zeit und kann mir besser reindenken und recherchieren - manchmal klappt halt nichts und ich habe keine / wenig Zeit :)
Ich bin ja froh, dass ich immer wieder Beispiele finde, die mit etwas Bastelei so passend gemacht wird, dass es den Zweck erfüllt, so wie auch in diesem Fall mit euerer Hilfe.
Erwin


  

Betrifft: Na, dann aber auch NachLESEN! ;-) owT von: Luc:-?
Geschrieben am: 07.08.2014 14:52:30

:-?


  

Betrifft: AW: Danke von: Daniel
Geschrieben am: 07.08.2014 19:06:22

Wir sind hier kein No-Cost-Ausbildungsbetrieb und auch kostenloser Softwaredienstleister!
Gruß Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Laufzeitfehler 13 - Typen unverträglich"