Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1384to1388
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
Initialize vlookup über anderes Tabellenblatt
16.10.2014 09:46:28
Thomas
Hallo,
ich bin wieder einmal Stunden damit beschäftigt eine sverweis-Funktion über ein anderes Tabellenblatt auszuführen.
Ich bekomme leider einen Laufzeitfehler der mir sagt, dass die Eigenschaft value nicht gesetzt werden konnte.
Was mache ich falsch?!
  • 
    Private Sub UserForm_Initialize()
    'On Error Resume Next
    the_value = Sheets("Richtpreise Anlagenkosten").range("tab_heizsystem").Value
    With Me
    .txtdatum.Value = Application.WorksheetFunction.VLookup(the_value, Sheets("Richtpreise  _
    Anlagenkosten").range("Tab_Heizsystem"), 64, False)
    '...hier kommen noch mehr Zeilen
    end with
    End Sub
    

  • 7
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Initialize vlookup über anderes Tabellenblatt
    16.10.2014 10:36:36
    {Boris}
    Hi,
    der Name "Tab_Heizsystem" bezieht sich offensichtlich ja auf einen Bereich. Und der ganze Bereich hat eben keine Value-Eigenschaft, die Du der Variable the_Value zuweisen könntest.
    VG, Boris

    AW: Initialize vlookup über anderes Tabellenblatt
    16.10.2014 10:58:25
    Thomas
    Danke Boris,
    ich bin vielleicht ein Idiot;)...ich habe mich so an dem Code aus einer anderen Userform orientiert das ich ganz übersehen habe das "the_value" sich ja auf den Suchbereich beziehen muss. Und dieser Suchbereich ist auch als Name definiert und befindet sich ja in einem anderen Tabellenblatt.
    the_value = Worksheets("Daten Standort und Ausstattung").range("Heizsystemauswahl").Value
    
    so funktioniert es jetzt.
    Vielen Dank nocheinmal für den Hinweis.

    Anzeige
    AW: Initialize vlookup über anderes Tabellenblatt
    16.10.2014 11:05:15
    Thomas
    Vielen Dank auch an Luc und Daniel für die schnelle Hilfe und die ausführlichen Antworten!

    Wenn 'Tab_Heizsystem' ein benannter Bereich ...
    16.10.2014 10:43:57
    Luc:-?
    …ist, Thomas,
    muss er mindestens 64 Spalten haben, damit VLookUp fktionieren kann. Hat er die aber (oder wenigstens 2 Werte), kann dein Konstrukt ebenfalls nicht fktionieren, weil the_value dann einen Vektor oder gar eine Matrix beinhalten/referenzieren würde (zumindest bei entsprd Deklaration, die du hier vermissen lässt, wenn .Value weggelassen wird), was ebenfalls nicht mit diesem WorksheetFunction-Objekt fktionieren könnte, denn das verlangt eine Argumentierung seiner ObjektFktt streng nach Bildungs­vorschrift. Alles, was die allgemeine XlSteuerung zur Ergebnis­Ermittlung beiträgt (wie Variation von skalaren Argumenten über einen angegebenen Bereich → die MatrixFktionalität), fehlt in VBA und muss selbst pgmiert wdn, wenn man nicht besser auf eine Lösung mit vbFkt Evaluate ausweichen will bzw kann.
    Das ist hier übrigens schon oft erklärt worden und mit Glück auch im Archiv zu finden.
    Gruß, Luc :-?

    Anzeige
    AW: Initialize vlookup über anderes Tabellenblatt
    16.10.2014 10:50:43
    Daniel
    Hi
    dein grundlegender Denkfehler ist, dass du den Zellbereich Sheets("Richtpreise Anlagenkosten").range("tab_heizsystem")
    in der VLookUp-Funktion sowohl als Suchmatrix, als auch als Suchwert (über die Variable "the_value") verwendest.
    das kann aber nicht funktionieren, weil der Suchwert ein Einzelwert sein muss, die Suchmatrix jedoch ein grösserer Zellbereich mit vielen Zeilen und in deinem Fall mit mindestes 64 Spalten.
    Da ein Zellbereich entweder aus einer Zelle oder aus vielen Zellen besteht, aber nie beides gleichzeitig, kann den VLookUp nicht funktionieren.
    Gruß Daniel

    Anzeige
    AW: Initialize vlookup über anderes Tabellenblatt
    16.10.2014 11:09:58
    Daniel
    Sorry, muss das nochmal korrigieren:
    du kannst in Worksheetfunction.VLookUp ein 2-D-Array als Suchwert verwenden!
    Das Ergebnis der Funktion ist dann allerdings ebenfalls ein 2-Dimensionales Array gleicher grösse, welches die Ergbniswerte enthält.
    in die Textbox kannst du alleridings immer nur einen Einzelwert schreiben und kein 2-Dimensionales Array.
    Und es bleibt Unsinn, für Suchmatrix und Suchwert den selben Zellbereich zu verwenden.
    Gruß Daniel

    Erstaunlicherweise hat hier der MS-Pgmierer ...
    16.10.2014 13:36:57
    Luc:-?
    …für das 1.Argument auch im Worksheet-Container eine Vektor­Auswertung vorgesehen, Daniel,
    was normalerweise nicht der Fall ist, wenn der FmlAssi nur einen EinzelWert anzeigt, was ein Indiz dafür ist, was mit der VBA-Variante geht und was nicht.
    Allerdings kann man auch ein Array in eine TextBox schreiben, allerdings eben nur als Text. Die Form (BereichsAdresse, einfache Aufzählungs­liste bzw MatrixKonstante) hängt dann von der Organisation des Ganzen (speziell den weiteren PgmSchritten) ab.
    Gruß, Luc :-?
    Anzeige

    313 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige