Microsoft Excel

Herbers Excel/VBA-Archiv

sverweis mit variablem Tabellennamen

Betrifft: sverweis mit variablem Tabellennamen von: Werner
Geschrieben am: 15.09.2020 09:55:48

Hallo,
als Neuling in VBA für Excel suche ich Hilfe.

Eine Funktion soll
- aus dem aktuellen Tabellenblatt in Zelle A3 auslesen -- funktioniert
- dann mit dem erhaltenen Wert mit sverweis aus dem Tabellenblatt "Variablen" den entsprechenden Inhalt auslesen -- funktioniert nicht syntax error

so habe ich das gemacht:

Function StdLohn() 
    
    Dim JahrMonat As String
    Dim LeseTabelle As String 
    JahrMonat = ActiveSheet.Range("A3")
    LeseTabelle = "Variablen"
    
    StdLohn=sverweis(JahrMonat;Lesetabelle!A4:A24;2;FALSCH)
    
    Debug.Print "JahrMonat:  " & JahrMonat
    Debug.Print "Lesetabelle:" & LeseTabelle
    Debug.Print "Stundenlohn:" & StdLohn
   
End Function

Betrifft: AW: sverweis mit variablem Tabellennamen
von: Yal
Geschrieben am: 15.09.2020 11:54:57

Function StdLohn()
'** Variablen
    Dim JahrMonat As String
    Dim LeseTabelle As String
    dim StdLohn 

'** Initialisierung
    JahrMonat = ActiveSheet.Range("A3")
    LeseTabelle = "Variablen"
    
'** Behandlung
    StdLohn = Application.WorksheetFunction.Lookup(JahrMonat, Range(LeseTabelle & "!A4:A24"), 2, _
 False)
    
'** Ausgabe
    Debug.Print "JahrMonat:  " & JahrMonat
    Debug.Print "Lesetabelle:" & LeseTabelle
    Debug.Print "Stundenlohn:" & StdLohn
   
End Function
Viel Erfolg
Yal

Betrifft: AW: sverweis mit variablem Tabellennamen
von: Werner
Geschrieben am: 15.09.2020 12:09:21

Vielen Dank für die Hilfe.

Leider funktioniert es so nicht. Die Fehlermeldung sagt: "Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft".

.Lookup ist dabei markiert.

Betrifft: AW: sverweis mit variablem Tabellennamen
von: Werner
Geschrieben am: 15.09.2020 12:20:24

Oh, hatte vergessen die Variable StdLohn zu deklarieren.

Wenn ich das tue erhalte ich die Fehlermeldung:

Fehler beim Kompilieren, Mehrdeutiger Name: StdLohn

Betrifft: AW: sverweis mit variablem Tabellennamen
von: Daniel
Geschrieben am: 15.09.2020 13:12:16

HI
deine Funktion heißt "StdLohn".
damit enthält sie automatisch eine Variable gleichen Namens für den Rückgabewert.
"StrLohn" kann und darf nicht zusätzlich deklariert werden.
Gruß Daniel

Betrifft: AW: sverweis mit variablem Tabellennamen
von: Werner
Geschrieben am: 15.09.2020 14:01:08

Daniel, vielen Dank. Das eine Variable nicht zweimal deklariert werden kann, war mir eigentlich klar. Aber ich hab's trotzdem versucht. Ohne die Deklaration taucht wieder der erstgenannte Fehler auf.

Wäre dankbar für weitere Hilfe.

Betrifft: AW: sverweis mit variablem Tabellennamen
von: Daniel
Geschrieben am: 15.09.2020 14:24:38

Hi
naja, du solltest schon wissen, welche Funktion du da verwendest.
LookUp oder VLookUp, bzw in Deutsch Verweis oder SVerweis.
dein Fehler ist, dass du LookUp als Funktion verwendest, aber die Parameter so angibst, wie es für den VLookUp erforderlich wäre.
also entweder die Funktion umbenennen oder die Parameter anpassen.

Gruß Daniel

Betrifft: AW: sverweis mit variablem Tabellennamen
von: Werner
Geschrieben am: 15.09.2020 18:02:37

Hi Daniel,
Deine Antwort hilft mir leider nicht wirklich. Meine Intension war, mit sverweis zu arbeiten. Das habe ich nicht hinbekommen. Dann erhielt ich den Tipp mit Lookup (s.o.). Das klappt nun auch nicht.

Vielleicht kann mir jemand die Funktion so umstellen, dass sie funktioniert.
Das wäre prima.

Betrifft: War mein Fehler. VLookUp ist richtig. owT
von: Yal
Geschrieben am: 16.09.2020 14:04:42

.

Betrifft: AW: War mein Fehler. VLookUp ist richtig. owT
von: Werner
Geschrieben am: 16.09.2020 14:40:06

Hallo Yal,

leider funktioniert es auch nicht mit VLookup.
Laufzeitfehler 1004: Die Vlookup-Eigenschaften des WorksheetFunction-Objekt kann nicht zugeordnet werden.

Die Funktion sieht nun so aus (ich habe nur StdLohn in NStdLohn geändert, da StdLohn schon im Tabellenblatt verwendet wurde, hat aber auch nichts verbessert):
Function NStdLohn()
'** Variablen
    Dim JahrMonat As String     'Aus aktivem Tabellenblatt Zelle A3)
    Dim LeseTabelle As String
    'Dim NStdLohn As String     'geht nicht, sonst doppelte Deklaration

'** Initialisierung
    JahrMonat = ActiveSheet.Range("A3")
    LeseTabelle = "Variablen"
    
'** Behandlung
    NStdLohn = Application.WorksheetFunction.VLookup(JahrMonat, Range(LeseTabelle & "!A4:A24"),  _
2, False)
    
'** Ausgabe
    Debug.Print "JahrMonat:  " & JahrMonat
    Debug.Print "Lesetabelle:" & LeseTabelle
    Debug.Print "Stundenlohn:" & NStdLohn & "€"
   
End Function


Betrifft: AW: War mein Fehler. VLookUp ist richtig. owT
von: peterk
Geschrieben am: 16.09.2020 15:10:06

Hallo

Probier mal (Ergebnis wird aus der 2 Spalte geholt, also B)

Function StdLohn()
'** Variablen
    Dim JahrMonat As String     'Aus aktivem Tabellenblatt Zelle A3)
    Dim LeseTabelle As String
    Dim NStdLohn As String     

'** Initialisierung
    JahrMonat = ActiveSheet.Range("A3")
    LeseTabelle = "Variablen"
    
'** Behandlung
    NStdLohn = Application.VLookup(JahrMonat,Worksheets(LeseTabelle).Range("A4:B24"),2, False)
    
'** Ausgabe
    Debug.Print "JahrMonat:  " & JahrMonat
    Debug.Print "Lesetabelle:" & LeseTabelle
    Debug.Print "Stundenlohn:" & NStdLohn & "€"
   
End Function


Betrifft: AW: War mein Fehler. VLookUp ist richtig. owT
von: Werner
Geschrieben am: 16.09.2020 15:19:05

Hallo PeterK,

Vielen Dank für den Tipp. Funktioniert leider auch nicht, gleiche Fehlermeldung.

Beiträge aus dem Excel-Forum zum Thema "sverweis mit variablem Tabellennamen"