Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1424to1428
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hausaufgabe

Hausaufgabe
09.05.2015 14:39:01
Jonas

Unser AINF-Lehrer hat uns am Fr diese Aufgabe gestellt, aber ich kann sie nicht lösen:
'Schreibe eine Funktion die deinen Namen
'(in der Form Vorname Nachname)
'einliest und ihn in die Form Nachname V.
'bringt und wieder ausgibt.
Beginnen sollen wir mit: Function twistName()
Danke im voraus für die Hilfe

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hausaufgabe
09.05.2015 15:08:48
Jonas
Tut mir leid, aber leider versteh ich diese Antwort nicht.
Trotzdem Danke füt die Hilfe

AW: Hausaufgabe
09.05.2015 15:18:52
Hajo_Zi
gut Du gehst davon aus das ich die Funktion twistName() kenne.
Gut dann gehe ich auch davon aus das Du die zu verwendende persönliche Funktion Trennen() kennst. Also benutze Sie.
Ich bin dann raus.
Gruß Hajo

Anzeige
twistName ist Name d.erst zu erstellenden Fkt!
09.05.2015 17:33:36
Luc:-?
Ist das so schwer zu begreifen, Hajo? ;->
Gruß, Luc :-?

Vorname und Nachname umdrehen
09.05.2015 15:08:39
WF
=TEIL(A1;FINDEN(" ";A1)+1;99)&" "&LINKS(A1;FINDEN(" ";A1)-1)
WF

AW: Vorname und Nachname umdrehen
09.05.2015 15:12:17
Jonas
Allles was wir im Untetrricht gemacht haben war:
Sub Funktionen02()
Dim s1 As String
Dim s2 As String
Dim n As Integer
'Kleinschreibung
s1 = "HALLO 2BHMBU!"
s2 = LCase(s1)
Debug.Print (s2)
'Großbuchstaben
s1 = "hallo 2bhmbu!"
s2 = UCase(s1)
Debug.Print (s2)
'Länge
s1 = "Hallo 2BHMBU!"
n = Len(s1)
Debug.Print (n)
'Linker Teilstring
s1 = "Hallo 2BHMBU!"
s2 = Left(s1, 5)
Debug.Print (s2)
'Rechter Teilstring
s1 = "Hallo 2BHMBU!"
s2 = Right(s1, 6)
Debug.Print (s2)
'Texposition finden
s1 = "Hallo 2BHMBU!"
s2 = " "
n = InStr(s1, s2)
Debug.Print (n)
'Teilstring
s1 = "Hallo 2BHMBU!"
s2 = Mid(s1, 4, 4)
Debug.Print (s2)
'Einzelnes Zeichen
s1 = Chr(65) & Chr(10) & Chr(66)
Debug.Print (s1)
End Sub

Anzeige
VBA: ohne mich
09.05.2015 15:17:20
WF
.

AW: VBA: ohne mich
09.05.2015 18:23:28
Herbert Grom
Hallo Walter,
der Gute kennt halt noch nicht Deine Präferenzen (Userbild
)! ;o)=)
Servus

OT: VBA mit mich @ HG
09.05.2015 20:25:33
Michael
Hallo Herbert,
ich schaffe es dieses Jahr leider nicht zum Excel-Treffen.
Schöne Grüße aus Nürnberg und mail die Tage,
Michael

AW: OT: VBA mit mich @ HG
10.05.2015 10:01:28
Herbert Grom
Hallo Michael,
"heute ist nicht alle Tage..."! ;o)=)
Servus

AW: Vorname und Nachname umdrehen
09.05.2015 15:24:39
Michael
Hallo Jonas,
da hast Du doch schon die Lösung vor der Nase!
Du suchst zuerst das Leerzeichen mit InStr, dann weist Du mit 2 mal Mid den Teilstring den Variablen s1 und s2 zu - beim hinteren Stück mußt Du dabei mit len berechnen, wie lang der String ist.
Schließlich setzt Du ihn in umgekehrter Reihenfolge wieder zusammen.
Übrigens paßt Dein Beispielcode nicht so recht: ein "normaler" Code steckt in einer sub, während eine Funktion Rückgabewerte hat. Deine Beispielfunktion hat *keine* Rückgabewerte.
Aha, Nepomuk hat zwischenzeitlich schon eine Lösung bereit gestellt...
Wenn Du sie nicht verstehst, machst Du es eben mit den Dir bekannten Mitteln wie oben skizziert.
Schöne Grüße,
Michael

Anzeige
AW: Vorname und Nachname umdrehen
09.05.2015 15:16:40
Nepumuk
Hallo,
so:
Option Explicit

Public Function twistName(ByRef probjCell As Range) As String
    Dim avntSplitName As Variant
    avntSplitName = Split(probjCell.Text, " ")
    twistName = avntSplitName(1) & " " & Left$(avntSplitName(0), 1) & "."
End Function

Anzeige
Hausaufgaben soll man eigentlich selber ...
09.05.2015 18:38:18
Luc:-?
…machen, Jonas,
aber da dir ja nun schon geholfen wurde, will ich mal nicht so sein, zumal Nepumuks Funktion allzu verräterische ProfiPgmmiererMerkmale zeigt. Außerdem ist nicht klar, woher die Fkt den Namen nehmen soll. Nepumuk hat hier die Eingabe unnötigerweise auf eine Arbeits­blatt­Zelle eingeengt. Deshalb könnte die untenstehende Fkt besser geeignet sein. Bei Anwendung beider Fktt in einer ZellFormel ergäbe sich folgendes Bild:
OT@Luc-kommt noch eine E-Mail? ;-) owT
09.05.2015 19:14:50
robert

OT: Ja, in den nächsten Tagen! SchöSo! orT
09.05.2015 21:16:50
Luc:-?
(Z.Z. ein kraFra-Problem!)
Gruß, Luc :-?

finde ich auch, aber trotzdem ...
09.05.2015 20:22:49
Michael
Hallo zusammen,
das ist ja wirklich was, was man dauernd braucht, und auch wenn das alles mit split und ähnlichen Befehlen geht, notiere ich so Zeug immer noch mit einer "historischen" Schreibweise, die genau den Kenntnissen von Jonas entspricht.
1. Aufgaben gehören sich in Teilprobleme zerlegt.
2. Wenn einen die Aufgabe überfordert, setzt man sich erst mal mit simpelsten Daten hin
Userbild
um sich einen Überblick zu verschaffen, was da passiert bzw. passieren soll.
Das sollte durch die farbliche Hervorhebung klar werden, hoffe ich.
Das Ganze in ein Programm umgesetzt könnte dann so aussehen:

Function twistname3(vollName As String) As String
posi = InStr(vollName, " ")
S1 = Mid(vollName, 1, posi - 1)
laenge = Len(vollName)
' S2 = Mid(vollName, 5, 3) auskommentiert
' wir wollen ja Variabeln für unterschiedliche
' Längen der Namen
S2 = Mid(vollName, posi + 1, laenge - posi)
twistname3 = S2 & " " & S1
End Function
Sub twist_aufrufen()
' Einlesen des Namens:
Name = Range("B11")
MsgBox twistname3(Name)
End Sub
wenn der "einzulesende Wert" in B11 steht; ansonsten halt inputbox oder wie auch immer.
Alle kapiert, Jonas?
Schöne Grüße,
Michael

Anzeige
Auf Deklarationen sollte man nicht verzichten, ...
09.05.2015 21:27:42
Luc:-?
…Michael;
und seinen Kenntnisstand hat er nicht mitgeteilt. Auch, wenn zu vermuten ist, dass der gg 0 tendiert, müsste es ja einen LehrplanStand geben, den wir aber nicht kennen.
Wenn die Funktion aus einer SubProzedur aufgerufen wird, muss es auch möglich sein, ihr eine TextVariable zu übergeben. Das geht zwar auch bei deiner Version, du zeigst es aber nicht.
Ansonsten bin ich durchaus bei dir, denn ich wäre wohl ein Alptraum für einen biederen Standard-VBA-Trainer… ;-)
Gruß + schöSo, Luc :-?

AW: finde ich auch, aber trotzdem ...
10.05.2015 10:05:05
Herbert Grom
Hallo Michael,
Deine Erläuterungen sind perfekt! Wer es so nicht kapiert, kapiert es nie mehr!
Servus

Anzeige
Lösung mit Regex
10.05.2015 12:13:56
CitizenX
Hi,
ist zwar alles schon gesagt und beantwortet worden, aber aus vollständigkeits- od. alternativ Gründen hier noch eine
Variante mit Regex, wobei die Trennung vom Vor- und Zunamen irrrelevant ist.

Option Explicit
Function twistName(ByRef strContent As String) As String
Dim regex: Set regex = CreateObject("vbscript.regexp")
With regex
.Pattern = "(\w).*\W(\w+)"
twistName = .Replace(strContent, "$2 $1.")
End With
End Function
VG
Steffen

Jonas?
10.05.2015 15:35:46
Michael
Hi zusammen,
es scheint, als ob Jonas die versammelte Excel-Power nicht zu würdigen weiß.
An seiner Stelle würde ich noch ein bißchen herumspielen, z.B. mit dem Umsortieren von mehr als zwei Namen. Ein Blick in die Hilfestellung zu instr und evtl. instrrev kann dabei nix schaden...
@Steffen: um Deine regex-Kenntnisse beneide ich Dich - mir verbiegt es da immer das Hirn.
@Luc: den Kenntnisstand hat er doch mitgeteilt: "gemacht haben wir nur" diese seltsame Beispielfkt, die keine ist. Ich stehe grad mit Deinem Kommentar auf der Leitung ("du zeigst es aber nicht"): ich rufe das Ding doch mit einer Variablen auf?
@Herbert: danke, ich hab mich halt erinnert, wie oft ich anfangs (tempus fugit) an so Zeug geknabbert hab.
Schönen Sonntag noch,
Michael

Anzeige
Ja, aber die ist nur deshalb Text, weil die Fkt ..
10.05.2015 18:19:58
Luc:-?
…Text verlangt, Michael;
primär rufst du in der SubProz eine Zelle auf. Ob Jonas den Zusammenhang erkennt, wage ich zu bezweifeln, wenn er doch nur diesen geringen Kenntnis­stand hat. Dafür mag ja das reprä­sentativ sein, was er gepostet hat, aber ob das auch dem Lehrplan­ziel entspricht, ist nicht zweifels­frei feststellbar.
Gruß, Luc :-?

AW: Ja, aber die ist nur deshalb Text, weil die Fkt ..
10.05.2015 18:33:47
Michael
Hi Luc,
da haste natürlich schon recht, die Angabe, wie das Ding überhaupt aufgerufen werden soll, isser uns schuldig geblieben: "schreibe eine Fkt, die die Namen einliest" ...
Wenn ich mir's genau überlege ...
copy con name.txt
Michael Mustermann
^Z
oder vielleicht
set name="Michael Mustermann"
Der Variationen gibt es fülle.
Gruß,
Michael

Anzeige
AW: warum nicht einfach die
10.05.2015 15:51:45
Daniel
Formellösung von WF nehmen und in VBA umsetzen, wenns VBA sein soll?
Function twistname(txt As String) As String
twistname = Mid(txt, InStr(txt, " ") + 1) & " " & Left(txt, 1) & "."
End Function
Gruß Daniel

Ja, das entspräche wohl am Ehesten Vorgabe ...
10.05.2015 18:22:56
Luc:-?
…und wahrscheinlich erwartetem Kenntnisstand des Fragestellers, Daniel.
Gruß, Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige