Thema Datum  Von Nutzer Rating
Antwort
16.07.2021 17:54:08 Alexander
NotSolved
16.07.2021 19:16:07 Gast36769
NotSolved
17.07.2021 11:48:23 Alexander
NotSolved
17.07.2021 12:13:15 Gast88039
NotSolved
17.07.2021 13:41:00 Gast54996
NotSolved
17.07.2021 15:03:24 Alexander
NotSolved
17.07.2021 14:12:15 Gast36769
*****
NotSolved
17.07.2021 14:43:18 Alexander
NotSolved
17.07.2021 12:32:28 Gast50100
*****
Solved
17.07.2021 13:36:35 Gast79267
NotSolved
17.07.2021 14:51:15 Alexander
NotSolved
17.07.2021 16:39:45 Gast6534
*****
NotSolved
18.07.2021 00:10:17 Gast36769
*****
NotSolved
18.07.2021 04:28:00 Gast6663
NotSolved
Rot Rot Benutzerdefinierte Funktion "Verbinden"
19.07.2021 13:34:54 Gast85832
NotSolved
18.07.2021 11:51:27 Alexander
NotSolved
18.07.2021 11:48:59 Alexander
NotSolved

Ansicht des Beitrags:
Von:
Gast85832
Datum:
19.07.2021 13:34:54
Views:
164
Rating: Antwort:
  Ja
Thema:
Benutzerdefinierte Funktion "Verbinden"

Korrekt ist: Man muss nicht auf Objekt prüfen.

Falsch ist: Man kann es sich daher sparen.

Das wiederspricht sich.

TypeName ist unzureichend
[zur Veranschaulichung: Ist das Objekt nun vom Typ Range oder VBAProject.Range? Das kann dir TypeName nicht beantworten]

Was auch immer du da an Unterschieden ausmachst ... Zeige mir mal bitte die Anwendung meiner Funktion, der du eine Range übergibst und es passiert nicht, was in der Aufgabenstellung steht.

es ist allgemein langsamer als der TypeOf-Operator. (spielt hier jedoch keine nennenswerte Rolle, wie gesagt ... nur am Rande)

Das ist nicht "nur am Rande", das ist im vorliegenden Kontext komplett irrelevant. Aber da du dir das nicht verkneifen konntest, stelle ich es gern richtig. Denn deine Aussage ist falsch. Die Funktion TypeName() ist fast 4x schneller als der Operator TypeOf:

Sub VarTest()
  Dim checkObject As Object
  Dim result As String
  Dim loopRuns As Long
  Dim getTimeStart As Double
  Set checkObject = ActiveSheet
  getTimeStart = Timer
  For loopRuns = 0 To 1000000
    result = TypeOf checkObject Is Object
  Next loopRuns
  Debug.Print Timer - getTimeStart
  getTimeStart = Timer
  For loopRuns = 0 To 1000000
    result = TypeName(checkObject)
  Next loopRuns
  Debug.Print Timer - getTimeStart
End Sub

=> Aus jetziger Sicht kann es sich theoretisch nur um zwei Dinge handel: Range oder Nicht-Range ... oder auch Objekt und Nicht-Objekt. Wenn man weiß, dass nur einzelne Zellen zulässig sind, könnte man sich diese Unterscheidung sogar ganz sparen.

So sehe ich es auch.

Was da alles ankommen kann, kann man nicht mit absoluter Gewissheit sagen

Wie gesagt, gib mir mal bitte ein Beispiel, in dem meine Funktion nicht macht, was in der Aufgabenstellung steht. Mir fällt nämlich nichts ein, was ich da übergeben könnte, was verarbeitet werden müsste, aber nicht wird.

und auch nich dass das, so wie es gerade ist, immer bleiben wird; M$ kann schnell schnell mal ein neues Feature implementieren;

Sorry, aber das halte ich für kompletten Bullshit. Selbst wenn ein neues Feature implementiert werden sollte, was ändert das an der Wirkweise meiner Funktion? Es ist ausgeschlossen, dass grundlegende Dinge von VBA so verändert werden, dass solche einfachen Makros nicht mehr machen was sie sollen. Du kannst mir aber gerne Beispiele aus der Vergangenheit nennen, in denen sowas passiert ist.

Kurz: Typenprüfung ist essenziel und man sollte daran zumindest denken.

Der Aussage ansich stimme ich zu, halte eine Typprüfung für die vorliegende Aufgabenstellung aber weiterhin für irrelevant.

Und darum ging es in dem Makro nur. Aufzeigen was man anhand der Aufgebenstellung zeigen kann.

Ich kenne den Kurs nicht, aber es scheint mir ein Nebenfach zu sein. Deshalb gehe ich davon aus, es soll nicht zwingend alles gezeigt werden was möglich ist, sondern dass eine Funktion geliefert werden soll, die genau das macht was in der Aufgabenstellung steht.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
16.07.2021 17:54:08 Alexander
NotSolved
16.07.2021 19:16:07 Gast36769
NotSolved
17.07.2021 11:48:23 Alexander
NotSolved
17.07.2021 12:13:15 Gast88039
NotSolved
17.07.2021 13:41:00 Gast54996
NotSolved
17.07.2021 15:03:24 Alexander
NotSolved
17.07.2021 14:12:15 Gast36769
*****
NotSolved
17.07.2021 14:43:18 Alexander
NotSolved
17.07.2021 12:32:28 Gast50100
*****
Solved
17.07.2021 13:36:35 Gast79267
NotSolved
17.07.2021 14:51:15 Alexander
NotSolved
17.07.2021 16:39:45 Gast6534
*****
NotSolved
18.07.2021 00:10:17 Gast36769
*****
NotSolved
18.07.2021 04:28:00 Gast6663
NotSolved
Rot Rot Benutzerdefinierte Funktion "Verbinden"
19.07.2021 13:34:54 Gast85832
NotSolved
18.07.2021 11:51:27 Alexander
NotSolved
18.07.2021 11:48:59 Alexander
NotSolved