Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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

Anzahl der Kunden aus bestimmter PLZ

Anzahl der Kunden aus bestimmter PLZ
14.06.2020 14:49:18
David
Hallo,
ich bräuchte eure Hilfe. Ich bin gerade ganz am Anfang VBA für die Praxisanwendung zu lernen und versuche verschiedene Aufgaben zu bewältigen.
Mein folgendes Problem ist: Ich möchte eine Tabelle bestehend aus Postleitzahlen so umformen, dass in der Zelle neben der jeweiligen PLZ die Anzahl der Kunden in dieser angezeigt werden. Als Beispiel wie die Tabelle aussieht:

PLZ eingeben: [TextBox1] [CommandButton1]
PLZ	  Anzahl
51598	0
53424	0
53426	0
53426	0
53426	0
53474	0
53489	0
53498	0
53498	0
53498	0
53501	0
53505	0

Wenn ich also in die TextBox eine gültige PLZ eingebe soll die Anzahl, eine Zelle nebenan, +1 _ gerechnet werden. Ich habe es nun mit folgendem Code versucht:

Private Sub CommandButton1_Click()
Dim Zeile As Variant
Dim PLZ As String
Dim Anzahl As Double
PLZ = TextBox1.Text
Zeile = Application.Match(PLZ, Range("A2:A3759"))
Anzahl = Tabelle1.Cells(Zeile, 2)
If PLZ = Zeile Then
Range(Anzahl).Value = Range(Anzahl).Value + 1
End If
End Sub

Hier wird mir die Fehlermeldung: "Laufzeitfehler 13: Typen unverträglich" ausgegeben. Dies liegt wahrscheinlich daran dass ich Variablen falsch deklariert habe. Jedoch bin ich absoluter neuling auf dem Gebiet und verstehe nicht welcher der Variablen falsch deklariert sein könnte und ob die Funktion so wie ich sie erstellt habe überhaupt das tut was sie soll.
Danke schonmal im Vorraus für die Hilfe!
Mfg David

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anzahl der Kunden aus bestimmter PLZ
14.06.2020 14:53:52
onur
Range(Anzahl) ? Anzahl ist eine ZAHL.
AW: Anzahl der Kunden aus bestimmter PLZ
14.06.2020 15:01:05
onur
Du hast doch hier schon definiert, wo sich die zu veränderte Zelle befindet - also weisst du doch, WELCHE Zelle:
Anzahl = Tabelle1.Cells(Zeile, 2)

Also wieso der Umweg über die Variable "Anzahl"?
Wieso nicht statt
Range(Anzahl).Value = Range(Anzahl).Value + 1

direkt so:
Tabelle1.Cells(Zeile, 2) = Tabelle1.Cells(Zeile, 2) + 1

?
AW: Anzahl der Kunden aus bestimmter PLZ
14.06.2020 15:22:45
David
Hallo onur,
Vielen Dank für die schnelle und konstruktive Hilfe! Da habe ich wohl etwas zu umständlich gedacht, du hast Recht!
Die Variable "Zeile" funktioniert aber nicht. Im Debug modus sehe ich, dass für die Variable "Zeile" den Fehler 2042.
An ralf:
Also Variant muss ich ja bei Zeile nehmen um bei Anzahl die richtige Zeile, in welcher der Wert eingetragen werden soll, zu bestimmen. Wenn ich nun die übereinstimmung mit der PLZ herausbekommen möchte, muss damm die If Funktion wie folgt aussehen?
If PLZ = Zeile.Text Then
Tabelle1.Cells(Zeile, 2) = Tabelle1.Cells(Zeile, 2) + 1
End If

Die Variable Anzahl habe ich jetzt, wie onur ja schon sinnvollerweise angeregt hat, rausgelassen.
Anzeige
AW: Anzahl der Kunden aus bestimmter PLZ
14.06.2020 15:31:20
onur

Private Sub CommandButton1_Click()
Dim Zeile
On Error Resume Next
Zeile = Application.Match(CLng(TextBox1), Range("A2:A3759"), 0) + 1
Tabelle1.Cells(Zeile, 2) = Tabelle1.Cells(Zeile, 2) + 1
End Sub

AW: Anzahl der Kunden aus bestimmter PLZ
14.06.2020 15:36:41
David
Vielen Vielen Dank onur, jetzt macht es genau das was es soll!
Das mit dem On Error kannte ich bisher noch nicht, muss ich mir aber merken.
Was macht das "CLng"? Wird hier der Text als Long deklariert?
Mfg David
AW: Anzahl der Kunden aus bestimmter PLZ
14.06.2020 15:49:59
onur
Nicht deklariert sondern umgewandelt.
Und "On Error" sollte man nur benutzen, wenn man genau weiss, was man tut - in diesem Falle erwartet man einen BESTIMMTEN Fehler an einer BESTIMMTEN Stelle (und zwar wenn nix gefunden wird) - und nicht als Allheilmittel gegen alle möglichen Fehler (die der Programmierer gemacht haben könnte).
Anzeige
ohne On Error
14.06.2020 16:52:43
Rudi
Hallo,
Private Sub CommandButton1_Click()
Dim Zeile
With Tabelle1
Zeile = Application.Match(CLng(TextBox1), .Columns(1), 0)
If Not IsError(Zeile) Then
.Cells(Zeile, 2) = .Cells(Zeile, 2) + 1
End If
End With
End Sub

Gruß
Rudi
AW: Anzahl der Kunden aus bestimmter PLZ
14.06.2020 15:09:14
ralf_b
z.b. vergleichst du zeile (Variant) = PLZ (String)
match liefert eine zeilenr. die kann als long deklariert werden
Anzahl = Tabelle1.Cells(Zeile, 2) was soll das bewirken?
wo wird etwas angezeigt? wo stehen die Kundendaten? wo werden diese summiert?
Range(Anzahl) geht nicht. Range ist ein Bereich und Anzahl eine Zahl, Das müßte in etwa so aussehen Range("A" & Zeile)
Range(Anzahl).Value = Range(Anzahl).Value + 1 du addierst zum Wert in der Zelle eine 1 , warum?
Anzeige
AW: Anzahl der Kunden aus bestimmter PLZ
14.06.2020 15:27:08
David
@ ralf: Die "Kundendaten" sollen ja in die Textbox eingetragen werden. Der ganze Sinn dieser Tabelle und der Funktion dazu ist, dass ich sehe in welcher PLZ wieviele Menschen (Kunden) wohnen. Jedesmal wenn ich also eine PLZ in die Textbox eintrage und auf CommandButton klicke soll in der Spalte neben der jeweiligen PLZ (in der Tabelle) die Anzahl um 1 erhöht werden. Anfangs steht bei Anzahl überall 0.
AW: Anzahl der Kunden aus bestimmter PLZ
14.06.2020 17:50:50
ralf_b
gern geschehen. ich mußte auch erst im netz suchen und rumprobieren welches event hier zuständig ist. und vor allem das es sich um ein Workbookevent handelt.
ups, falscher Thread, sorry
14.06.2020 17:58:38
ralf_b

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige