Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA VLookup
#1
Guten Abend,

kann mir einer sagen was ich falsch mache? 
Irgendwie will mir das gerade nicht wieder einfallen.

Code:
    Dim Anzahl_Zahl As Variant, Anzahl_Text As Variant, _
    MakroAnzeige As Variant, Range_A As Variant, Range_V As Variant
   
        Anzahl_Zahl = Anzahl_Zahl_txtbox.Value
        Anzahl_Text = Anzahl_Text_txtbox.Value
       
        Range_A = WorksheetsFunction.VLookup(Anzahl_Zahl_txtbox.Value, Sheets("Information").[TabelleInfos], 2, False)
        Range_V = WorksheetsFunction.VLookup(Anzahl_Zahl_txtbox.Value, Sheets("Information").[TabelleInfos], 3, False)
   
        New_Range = Range_A & ":" & Range_V

Wäre echt Korrekt!???

MfG
Herbert
Antworten Top
#2
Hallöchen,

Da Du nicht genau schreibst, wo es klemmt, könnte ich jetzt erst mal schreien das Sub ... und End Sub fehlt.
Eventuell könnte es auch besser mit dem .Text einer Textbox funktionieren.
Vielleicht liefe es sofern die Zellen resp. deren Einträge gefunden werden und keine Fehlerwerte wie #BEZUG oder #WERT drin stehen.
Vielleicht hast Du Option Explicit und nur New_Range nicht dimensioniert.
Vielleicht Hoffentlich bleibt das Wetter heute schön Smile
Wo klemmt es denn genau? Kommt eine Fehlermeldung oder nur was falsches raus?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Moin!
Anzahl_Zahl_txtbox liefert einen TEXT, egal ob .Value oder .Text
In Deiner Tabelle stehen aber sicherlich ZAHLEN.
Der SVERWEIS ist da penibel!

Wenn Du schon Variablen füllst, solltest Du das auch gleich richtig machen und sie vor allem dann auch im weiteren Code verwenden!

Entweder:
Dim Anzahl_Zahl As Variant
Anzahl_Zahl = CDbl(Anzahl_Zahl_txtbox.Value)

Oder:
Dim Anzahl_Zahl As Double
Anzahl_Zahl = Anzahl_Zahl_txtbox.Value

Gruß Ralf

Um das mal zu verdeutlichen, ein kleines Makro, welches die Typunterschiede verdeutlicht:
Sub RP()
  Dim a
  a = CDbl("1")
  Debug.Print "a ist " & TypeName(a)
  
  Dim b As Double
  b = "1"
  Debug.Print "b ist " & TypeName(b)
  
  Dim c
  c = "1"
  Debug.Print "c ist " & TypeName©
End Sub

ergibt folgende Ausgabe im Direktfenster:
a ist Double
b ist Double
c ist String
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
Guten Morgen,

ich hatte das gestern Abend noch anders gelöst

Code:
Private Sub Generieren_btn_Click()

'*********************************************************
'                  Variablen erfassen
'*********************************************************

    Dim Anzahl_Zahl As Variant, Anzahl_Text As Variant, _
    MakroAnzeige As Variant, Range_A As Variant, Range_V As Variant
   
        Anzahl_Zahl = Anzahl_Zahl_txtbox.Value
        Anzahl_Text = Anzahl_Text_txtbox.Value
   
        Range_A = Worksheets("Information").Range("$T$2:$V$37").Find(Anzahl_Zahl, lookat:=xlWhole).Offset(0, 1).Value
        Range_V = Worksheets("Information").Range("$T$2:$V$37").Find(Anzahl_Zahl, lookat:=xlWhole).Offset(0, 2).Value
       
        New_Range = Range_A & ":" & Range_V

End Sub


MfG
Herbert
Antworten Top
#5
(28.03.2021, 11:12)Herbert der Erste schrieb: ich hatte das gestern Abend noch anders gelöst
Ja, kann man natürlich so machen.
Ändert aber nichts daran, dass man wenn möglich den Variablentyp korrekt deklariert und sie dann wie angemerkt füllt.

Du solltest trotzdem meinen Ansatz mal prüfen.
Ich kann es nicht nicht häufig genug schreiben:
Das A in VBA steht für Application, also Excel.
Wo immer möglich sollte man in originäre VBA Excel-Methoden nutzen.

Das kann (nicht muss) enorme Geschwindigkeit bringen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#6
Worksheetsfunction kann auch nicht funktionieren,  da es Worksheetfunction heißt.
Schöne Grüße
Berni
Antworten Top
#7
Adlerauge!  19

Ist mir beim Lesen nicht aufgefallen.
@Herbert:
Um so etwas zu verhindern, sollte man im VBA-Editor (außerhalb der Variablendeklaration) grundsätzlich klein schreiben!
Beim Beginn einer neuen Zeile führt der Compiler eine Überprüfung durch und "schreibt" die Begriffe richtig.

Übrigens:
Ich schreibe im Code wor und drücke Strg+Leertaste.
Dann bietet mir die Intellisense eine Auswahl der möglichen Schlüsselwörter an!
   

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste