Registriert seit: 25.03.2021
Version(en): 365
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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
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)
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
28.03.2021, 10:26
(Dieser Beitrag wurde zuletzt bearbeitet: 28.03.2021, 10:47 von RPP63.)
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 VariantAnzahl_Zahl = CDbl(Anzahl_Zahl_txtbox.Value)Oder:
Dim Anzahl_Zahl As DoubleAnzahl_Zahl = Anzahl_Zahl_txtbox.ValueGruß 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 Doubleb ist Doublec 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)
Registriert seit: 25.03.2021
Version(en): 365
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
28.03.2021, 12:20
(Dieser Beitrag wurde zuletzt bearbeitet: 28.03.2021, 12:30 von RPP63.
Bearbeitungsgrund: unscharfe Formulierung gelöscht
)
(28.03.2021, 12: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)
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Worksheetsfunction kann auch nicht funktionieren, da es Worksheetfunction heißt.
Schöne Grüße
Berni
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
Adlerauge!

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)