121803

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.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 270765

Url: https://administrator.de/forum/vba-programm-welches-personalien-abfragt-und-in-eine-excel-tabelle-einfuellt-270765.html

Ausgedruckt am: 22.06.2025 um 00:06 Uhr

Biber
Biber 30.04.2015, aktualisiert am 01.05.2015 um 13:50:38 Uhr
Goto Top
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
114757
114757 30.04.2015 um 18:30:31 Uhr
Goto Top
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
Gruß jodel32
colinardo
Lösung colinardo 30.04.2015, aktualisiert am 01.05.2015 um 14:20:30 Uhr
Goto Top
Gruezi @121803,
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
121803
121803 01.05.2015 um 14:22:07 Uhr
Goto Top
Hallo jodel32

Dieser Code scheint bei mir nicht zu funktionieren.
Wenn ich ihn ausführe, passiert nichts.

Mache ich etwas falsch ?

Gruss daniel4916x
121803
121803 01.05.2015 um 14:24:02 Uhr
Goto Top
Hallo Biber

Vielen Dank!
Hat mir schon einwenig weitergeholfen. Jedoch kommt immernoch nicht die richtige Zahl heraus.
Könntest du mir in Form eines Codes veranschaulichen, auf was ich achten muss?

Danke und Grüsse
daniel4916x
114757
114757 01.05.2015 aktualisiert um 16:34:53 Uhr
Goto Top
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!!
Mache ich etwas falsch ?
Ja, starte die Sub Test, dann klappts auch face-wink
Die Function zählt ja die Anzahl an Buchstaben welche du suchst, und gibt sie zurück. Funktioniert einwandfrei!
114757
114757 01.05.2015 aktualisiert um 16:40:37 Uhr
Goto Top
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")  
Biber
Biber 01.05.2015 um 21:59:55 Uhr
Goto Top
Moin daniel4916x,

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
Biber
Biber 04.05.2015, aktualisiert am 07.05.2015 um 18:38:50 Uhr
Goto Top
[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]