[VBA] Funktion läuft nicht

N_O_K_I_A

Commander
Registriert
Jan. 2007
Beiträge
2.113
Hi,

ich bin relativ neu in der Excel VBA-Programmierung und wollte Testweise eine Funktion auslagern.
Ist wollte aus der Zelle A1, in der eine beliebige Zeichenkette steht, das erste Zeichen auslesen.
Das Auslesen sollte in einer ausgelagerten Funktion stattfinden.

Main ist mein "Hauptprogramm", falls man das hier auch so nennt?

Das hier ist der Code:

Code:
Private Function ErstesZeichen(EZ As String) As String

EZ = Mid(Str, 1, 1)

Debug.Print ErstesZeichen


End Function


Sub Main()

Dim Str As String

Str = Range("A1").Value

Debug.Print ErstesZeichen()


End Sub
 
Deine Funktion gibt nichts zurück. Es muss in Zeile 5 heißen:

Code:
 ErstesZeichen = EZ

Mit Debug.Print gibst du nur etwas auf der Konsole aus. Das sollte in der Funktion also nicht gemacht werden.
 
Versuche es mal so...

Code:
Private Function ErstesZeichen(EZ As String) As String
    ErstesZeichen = Mid(EZ, 1, 1)
End Function
     
     
Sub Main()
    Dim Str As String
    Str = Range("A1").Value
    Debug.Print ErstesZeichen(Str)
End Sub
 
Und was genau ist jetzt die Frage?

Du hast allerdings einige grundlegende Fehler in deinem Code:
1. deine Funktion ErstesZeichen nimmt einen Parameter "EZ" an, beim Aufruf im Main übergibst du aber nichts
2. du verwendest die Variable "Str" in der Funktion ErstesZeichen, deklariert ist sie aber im Main

So wäre die Funktion korrekt:
Code:
Private Function ErstesZeichen(Str As String) As String

    ErstesZeichen = Mid(Str, 1, 1)
 
End Function

Sub Main()
 
    Dim Str As String
    Str = Range("A1").Value
    Debug.Print ErstesZeichen(Str)
 
End Sub
 
Code:
Private Function ErstesZeichen(e As String) As String
  ErstesZeichen = Mid(e, 1, 1)
End Function
  
Sub Main()
 Dim Str As String
 Str = Range("A1").Value
 Debug.Print ErstesZeichen(Str)
End Sub
In A1 muss natürlich auch was drin stehen. Du hattest Str nicht übergeben und den Funktionswert gibst du mit der Zuweisung auf den Funktionsnamen (also "ErstesZeichen") zurück.
 
Hey, so lernt er das aber nicht. Ich finde, er sollte ruhig ein bißchen mit dem Debugger probieren.
 
Danke, jetzt hats geklappt.
Natürluch muss ich ja, wenn ich Str an die Funktion übergebe, dort der Wert dann als EZ definiert wird in der Funktion auch mit EZ arbeiten und nicht weiter mit Str....


EDIT:

Beim Umändern gabs noch weitere Antworten.
Danke für die Tipps. Hab den Fehler erkannt...
 
Zurück
Oben