121803
Goto Top

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.

Content-Key: 270765

Url: https://administrator.de/contentid/270765

Printed on: April 19, 2024 at 03:04 o'clock

Member: Biber
Biber Apr 30, 2015, updated at May 01, 2015 at 11:50:38 (UTC)
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
Mitglied: 114757
114757 Apr 30, 2015 at 16:30:31 (UTC)
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
Member: colinardo
Solution colinardo Apr 30, 2015, updated at May 01, 2015 at 12:20:30 (UTC)
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
Mitglied: 121803
121803 May 01, 2015 at 12:22:07 (UTC)
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
Mitglied: 121803
121803 May 01, 2015 at 12:24:02 (UTC)
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
Mitglied: 114757
114757 May 01, 2015 updated at 14:34:53 (UTC)
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!
Mitglied: 114757
114757 May 01, 2015 updated at 14:40:37 (UTC)
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")  
Member: Biber
Biber May 01, 2015 at 19:59:55 (UTC)
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
Member: Biber
Biber May 04, 2015, updated at May 07, 2015 at 16:38:50 (UTC)
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]