121803
Apr 30, 2015, updated at May 01, 2015 (UTC)
1199
9
0
VBA Programm welches Personalien abfragt und in eine Excel-Tabelle einfüllt
Hallo zusammen
Ich habe den Auftrag, ein Programm zu erstellen, welches Personalien abfragt und in eine Excel-Tabelle einfüllt.
Folgende Angaben sollten abgefragt werden:
1. Kolonne: Personalnummer (Das ist eine durchlaufende Nummerierung, beginnend bei 1)
2. Kolonne: Vorname und Familienname (Mit Leerzeichen getrennt)
3. Kolonne: Postleitzahl (Vierstellige Nummer)
Einige Rahmenbedingungen:
Die Eingabe sollte so erfolgen, dass jedes Adresselement Name bzw. Postleitzahlzahl einzeln abgefragt wird.
Bei Programmstart kann die Tabelle leer sein oder bereits eine Anzahl Adress-Datensätze beinhalten. Sind schon Daten in der
Tabelle vorhanden, müssen neue am Ende der Liste angefügt werden. Die Person erhält demnach die nächste freie Personalnummer.
Und dann habe ich noch eine kurze, generelle Frage:
Wie kann mann in einem Text (String) feststellen wie viel mal z.B. der Buchstabe "e" vorkommt?
Grosse "e" sollten auch gezählt werden und bei einer Leereingabe muss das Programm damit umgehen können.
Ich habe bereits mit der Funktion: instr(1,"Text", "e") gespielt. Leider kam nie die richtige Zahl heraus, meiner Meinung nach weil er nicht den ganzen String analysiert.
Ich wäre froh um einen Code, damit ich mittels einer Anregung den Auftrag abschließen kann.
Vielen Dank im voraus und viele Grüsse
Daniel.
Ich habe den Auftrag, ein Programm zu erstellen, welches Personalien abfragt und in eine Excel-Tabelle einfüllt.
Folgende Angaben sollten abgefragt werden:
1. Kolonne: Personalnummer (Das ist eine durchlaufende Nummerierung, beginnend bei 1)
2. Kolonne: Vorname und Familienname (Mit Leerzeichen getrennt)
3. Kolonne: Postleitzahl (Vierstellige Nummer)
Einige Rahmenbedingungen:
Die Eingabe sollte so erfolgen, dass jedes Adresselement Name bzw. Postleitzahlzahl einzeln abgefragt wird.
Bei Programmstart kann die Tabelle leer sein oder bereits eine Anzahl Adress-Datensätze beinhalten. Sind schon Daten in der
Tabelle vorhanden, müssen neue am Ende der Liste angefügt werden. Die Person erhält demnach die nächste freie Personalnummer.
Und dann habe ich noch eine kurze, generelle Frage:
Wie kann mann in einem Text (String) feststellen wie viel mal z.B. der Buchstabe "e" vorkommt?
Grosse "e" sollten auch gezählt werden und bei einer Leereingabe muss das Programm damit umgehen können.
Ich habe bereits mit der Funktion: instr(1,"Text", "e") gespielt. Leider kam nie die richtige Zahl heraus, meiner Meinung nach weil er nicht den ganzen String analysiert.
Ich wäre froh um einen Code, damit ich mittels einer Anregung den Auftrag abschließen kann.
Vielen Dank im voraus und viele Grüsse
Daniel.
Please also mark the comments that contributed to the solution of the article
Content-Key: 270765
Url: https://administrator.de/contentid/270765
Printed on: April 24, 2024 at 08:04 o'clock
9 Comments
Latest comment
Moin daniel4916x,
willkommen in Forum.
Ganz klar ist mir deine Frage bzw. deine Erwartungshaltung nicht - aber zumindest zu der "kurzen, generellen Frage" kann ich dich vielleicht in die richtige Richtung schubsen.
Mit instr() kannst du ja das Vorhandensein/Nichtvorhandensein eines Teilstrings nachweisen, ist also zum Zählen eher ungeeignet.
Aber - rein vom gesunden Menschenverstand her hat sicherlich der Text mit den 0, 1, 2 oder 7 "e"s eine bestimmte Länge.
ZB die Länge("Biber") wäre gleich 5.
Wenn Du von dieser Länge die Länge des Textes Ersetze-alle-e-durch-Leerstring-im-Text(Kleingeschrieben(("Biber")) abziehst, dann solltest du auf die Anzahl kommen.
"Ersetze" heisst im VBA-Slang "Replace()".. Leerstring schreibt sich da so: "".. "Kleingeschrieben" nennen die "lcase()"
Grüße
Biber
willkommen in Forum.
Ganz klar ist mir deine Frage bzw. deine Erwartungshaltung nicht - aber zumindest zu der "kurzen, generellen Frage" kann ich dich vielleicht in die richtige Richtung schubsen.
Mit instr() kannst du ja das Vorhandensein/Nichtvorhandensein eines Teilstrings nachweisen, ist also zum Zählen eher ungeeignet.
Aber - rein vom gesunden Menschenverstand her hat sicherlich der Text mit den 0, 1, 2 oder 7 "e"s eine bestimmte Länge.
ZB die Länge("Biber") wäre gleich 5.
Wenn Du von dieser Länge die Länge des Textes Ersetze-alle-e-durch-Leerstring-im-Text(Kleingeschrieben(("Biber")) abziehst, dann solltest du auf die Anzahl kommen.
"Ersetze" heisst im VBA-Slang "Replace()".. Leerstring schreibt sich da so: "".. "Kleingeschrieben" nennen die "lcase()"
Grüße
Biber
Function CountChar(str As String, char As String) As Long
Dim cnt As Long
For i = 1 To Len(str)
If LCase(Mid(str, i, 1)) = LCase(char) Then cnt = cnt + 1
Next
CountChar = cnt
End Function
Sub Test()
msgbox CountChar("Hallo das ist ein TeSt","s")
End Sub
Gruezi @121803,
create_new_employee_270765.xlsm
So long @colinardo
Ich wäre froh um einen Code, damit ich mittels einer Anregung den Auftrag abschließen kann.
Dann hier mal fix was zum basteln ... Viel Spaß ...create_new_employee_270765.xlsm
So long @colinardo
Zitat von @121803:
Dieser Code scheint bei mir nicht zu funktionieren.
Wenn ich ihn ausführe, passiert nichts.
Ist normaler VBA-Code den du z.B. in Excel ausführen kannst!!Dieser Code scheint bei mir nicht zu funktionieren.
Wenn ich ihn ausführe, passiert nichts.
Mache ich etwas falsch ?
Ja, starte die Sub Test, dann klappts auch Die Function zählt ja die Anzahl an Buchstaben welche du suchst, und gibt sie zurück. Funktioniert einwandfrei!
Wenn du VBS meinst, lautet der Code so
Function CountChar(str, char)
Dim cnt
For i = 1 To Len(str)
If LCase(Mid(str, i, 1)) = LCase(char) Then cnt = cnt + 1
Next
CountChar = cnt
End Function
msgbox CountChar("Hallo das ist ein TeSt","s")
Moin daniel4916x,
wenn du meine Mimik testen willst als VBA-Function, dann analog zu jodel32 zB
Und Sub Test() starten mit F5.
Grüße
Biber
wenn du meine Mimik testen willst als VBA-Function, dann analog zu jodel32 zB
Function CharCountBiber(str As String, anotherstr As String) As Long
CharCountBiber = Len(str) - Len(Replace(str, anotherstr, "", , , vbTextCompare))
End Function
Sub Test()
MsgBox CharCountBiber("Hallo das ist ein TeSt", "s")
End Sub
Und Sub Test() starten mit F5.
Grüße
Biber
[OT]
Tja,
der User hat sich, nachdem seine Fragen (vermutlich) hinreichend beantwortet wurden, postwendend wieder abgemeldet.
Ich werde seine Beiträge nicht in den Papierkorb verschieben, wegen der aus meiner Sicht hilfreichen Antworten von jodel32 und colinardo und wegen der möglichen Verwendbarkeit für andere VBA-Einsteiger.
Dennoch finde ich derartige Eintags-Fragesteller ein bisschen schwierig.
Grüße
Biber
[/OT]
Tja,
der User hat sich, nachdem seine Fragen (vermutlich) hinreichend beantwortet wurden, postwendend wieder abgemeldet.
Ich werde seine Beiträge nicht in den Papierkorb verschieben, wegen der aus meiner Sicht hilfreichen Antworten von jodel32 und colinardo und wegen der möglichen Verwendbarkeit für andere VBA-Einsteiger.
Dennoch finde ich derartige Eintags-Fragesteller ein bisschen schwierig.
Grüße
Biber
[/OT]