VBA verwenden
#1
Hallo zusammen,

ich habe mir heute einen VBA für die Geschlechteridentifikation von Vornamen gesucht und bin dabei auf folgenden Code gestoßen:

Function mw(sName As String)
'Umsetzung von
'http://www.herber.de/excelformeln und bitte suchen .../formeln.html?welcher=430
'in Code
'WF habe Gnade mit mir
Dim sm(2 To 6), sw(1 To 6), sms, sws
If sName = "" Then
mw = ""
Else
Select Case LCase(Right(sName, 2))
Case "ai", "an", "ay", "dy", "en", "fa", "gi", "hn", "nn", "oy", "pe", _
"ri", "ry", "ua", "uy", "ve", "we"
sm(2) = 1
End Select
Select Case LCase(Right(sName, 3))
Case "ael", "ali", "ain", "bal", "bin", "cal", "cca", "cel", "cin", _
"die", "don", "dre", "ede", "emy", "eon", "gon", "gun", "hel", _
"hka", "iel", "ill", "ini", "kie", "lge", "lon", "lte", "met", _
"mil", "min", "mon", "mud", "nsi", "oah", "obi", "oel", "örn", _
"ole", "oni", "rel", "rge", "ron", "rne", "rre", "rti", "son", _
"ste", "tie", "ton", "uce", "udi", "uel", "uli", "uke", "vid", _
"vin", "win", "xel"
sm(3) = 1
End Select
Select Case LCase(Right(sName, 4))
Case "abel", "akim", "kola", "eike", "eith", "elin", "frid", "gary", _
"hane", "hein", "irin", "mike", "muth", "neth", "ntin", "nuth", _
"önke", "ören", "rene", "rtin", "stas", "tila", "tony", "tore"
sm(4) = 1
End Select
Select Case LCase(Right(sName, 5))
Case "astel", "laude", "dolin", "ronny", "ustel", "ustin", "willi", "willy"
sm(5) = 1
End Select
Select Case LCase(Right(sName, 6))
Case "sascha"
sm(6) = 1
End Select
sms = -Application.Sum(sm)
Select Case LCase(Right(sName, 1))
Case "a", "e", "i", "n", "y"
sw(1) = 1
End Select
Select Case LCase(Right(sName, 2))
Case "ah", "al", "bs", "dl", "el", "et", "id", "il", "it", "ll", "th", _
"ud", "uk"
sw(2) = 1
End Select
Select Case LCase(Right(sName, 3))
Case "ary", "aut", "des", "een", "fer", "got", "ies", "ild", "ind", "jam", _
"ken", "kim", "lar", "len", "lis", "men", "mor", "oan", "ren", "res", _
"rix", "san", "tas", "udy", "urg"
sw(3) = 1
End Select
Select Case LCase(Right(sName, 4))
Case "atie", "borg", "cole", "gard", "gart", "gnes", "gund", "iede", "indy", _
"ines", "iris", "istl", "ldie", "lilo", "lott", "lynn", "oldy", "riam", _
"rien", "smin", "ster", "uste", "vien"
sw(4) = 1
End Select
Select Case LCase(Right(sName, 5))
Case "achel", "agmar", "almut", "doris", "edwig", "heike", "irene", "mandy", _
"meike", "rauke", "reike", "sandy", "sther", "uriel", "velin"
sw(5) = 1
End Select
Select Case LCase(Right(sName, 6))
Case "irsten", "almuth"
sw(6) = 1
End Select
sws = Application.Sum(sw)
If sws + sms = 1 Then
mw = "w"
Else
mw = "m"
End If
End If
End Function


Ich habe es bereits geschafft, das Modul in dem xlsm File anzulegen, jedoch verstehe ich nicht, wie ich den Code im Excel Sheet zum Laufen bekomme. Die Spalte meiner Vornamen heißt bereits sName und die Zielspalte ebenso mw. Habe ich einen Denkfehler, oder sollte der Code funktionieren? Bzw. muss ich den irgendwie gesondert starten?

Aktuell sind meine Spalten wie folgt sortiert:
Ticketname Bestellnummer Nachname sName mw Alter PLZ Stadt Land


Ich hoffe die Frage ergibt Sinn...
Vielen Dank im Voraus 

LG
Jakob


Angehängte Dateien Thumbnail(s)
       
Antworten Top
#2
Hi,
vielleicht verstehe ich Dich faslch, aber der Code startet ja nicht automatisch, Du brauchst eine Schaltfläche, um den Code zu starten.

Reiter "Entwicklertools", "Steuerlemente", "Einfügen" ...

Gruß Regina
[-] Folgende(r) 1 Nutzer sagt Danke an ReginaR für diesen Beitrag:
  • Cpt-Planlos
Antworten Top
#3
Hi Regina,

vielen Dank für die rasche Hilfe.
Leider bin ich auf dem Mac und das schaut nicht alles gleich aus, aber ich kann eine Schaltfläche machen, aber die kann sich nur auf einen Macro beziehen, oder?

ich habe mittlerweile herausgefunden, wie die Schaltfläche verbunden wird, aber es passiert leider nichts, wenn ich die Schaltfläche klicke. Habt ihr eine Idee was ich falsch mache?

Liebe Grüße
Jakob
Antworten Top
#4
Hast Du Makros im Trustcenter aktiviert?
Antworten Top
#5
Hallo zusammen,

hab das gerade gecheckt. Makros sind aktiviert und erlaubt. :)

Liebe Grüße
Jakob
Antworten Top
#6
...dafür brauchst Du keine Schaltfläche. Die Funktion liefert einen Wert entsprechend dem übergebenen Parameter.

Bsp.: In A1 steht ein beliebiger Vorname und in B1 willst Du wissen, ob es ein weiblicher oder männlicher Vorname ist (vorausgesetzt die gesetzten Bedingungen sind korrekt), dann musst Du in B1 eingeben:

= mw(A1)
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

[-] Folgende(r) 1 Nutzer sagt Danke an Ralf A für diesen Beitrag:
  • Cpt-Planlos
Antworten Top
#7
Hallo Ralf,

vielen Dank!
Das habe ich bereits versucht. Leider dürfte da ein Fehler im Code zu sein.

   

Im VBA Editor ist der Code nämlich drinnen und die Datei ist als .xlsm gespeichert.

   

Ich werde daraus einfach nicht schlau...
Aber es ist einfach nicht möglich diese Aufgabe selbst durchzuführen bei mehr wie 40k Zeilen.

Danke im Voraus und liebe Grüße
Jakob
Antworten Top
#8
...die Fehlermeldung sagt doch alles... ambiguous = mehrdeutig... hast Du die gleiche Funktion auch im Modul 2? dann husch husch.... weg damit!
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

[-] Folgende(r) 1 Nutzer sagt Danke an Ralf A für diesen Beitrag:
  • Cpt-Planlos
Antworten Top
#9
Hallo Ralf,

vielen Dank für die Hilfe.
Leider habe ich nun einen neuen Error.
   

Hast du hierfür auch eine Idee?

Liebe Grüße
Jakob
Antworten Top
#10
Hei,

ich denke du machst da einen grundsätzlichen Fehler. Es handelt sich dabei um eine benutzerdefinierte Funktion (UDF). Die baust du in deine Datei so ein, wie auf dem Beispiel unten:

Tabelle1

AB
1
2Dieterm
3
Formeln der Tabelle
ZelleFormel
B2=mw(A2)

Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8

In Funktionsmanager findest du das unter Benutzerdefiniert, arbeitet letztlich wie eine Standard-Zellfunktion.
Hoffe geholfen zu haben
Hubert
Antworten Top


Gehe zu:


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