Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1320to1324
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

Einträge zählen

Einträge zählen
17.07.2013 23:39:13
Dietmar
Hallo in die Runde,
ich möchte gerne die Eintragungen von Werten zählen.
Die Eintragung des Wertes erfolgt in B2
In A7 bis A17 stehen Werte. Diesen habe ich den Namen 'CodeNr' vergeben.
Nun möchte ich in B2 eine Codenummer eintragen. Nach dem Enter soll dieser Eintrag mit den Eintragungen im Bereich des Namens 'CodeNr" (=A7 bis A17) geprüft werden. Wenn es die Nummer gibt, soll in Spalte B2 - B17 der Eitntag mit 1 gezählt werden. Wenn in Spalte B schon ein Wert steht, soll er zu dem bestehenden mit 1 hinzuaddiert werden.
Wie muss der entsprechende VBA-Code dazu lauten?
Hier die Beispieldatei.
https://www.herber.de/bbs/user/86428.xls
Herzlichen Dank!
LG
Dietmar aus Aachen

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ich vermute mal Du suchst einen VBA-Code
18.07.2013 01:21:34
Matthias
Hallo Dietmar
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
Dim Wert$, x&
Wert = Target.Value
For x = 7 To 25
If Cells(x, 1) = Wert Then Cells(x, 2) = Cells(x, 2) + 1
Next
End If
End Sub
Gruß Matthias

VBA-Code war richtig - Folgefrage
18.07.2013 11:00:33
Dietmar
Hallo Matthias,
vielen Dank, genau das suchte ich.
Nun möchte ich die Sache noch etwas weiterentwicklen (ist übrigens die Vorarbeit für für Barcodescannereinträge; hoffe, dass ich das richtig anpacke).
Es stellt sich nun das Problem, dass das Change-Ereignis immer eintritt, egal, was ich auf dem Sheet mache.
Lässt sich dies auf Change-Einträge in B1 beschränken?
Ich möchte nämlich in C1 Werte eintragen können, die als Multiplikator dienen.
Meine Idee einer Weiterentwicklung Deines Codes funtkioniert aber nicht. Ich mache da irgendeinen Gedankenfehler. Sieht bisher so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
Dim Wert$, x&
Wert = Target.Value
For x = 7 To 25
'If Cells(x, 2) = Wert Then Cells(x, 2) = Cells(x, 2) + 1
If Cells(x, 2) = Wert Then Cells(x, 2) = Cells(x, 2) + Range("C1").Value  'Multiplicator in  _
C1
Next
End If
With Range("B1")
.ClearContents
.Select
End With
Range("C1").Value = 1   '1 soll der Standardeintrag des Multiplikators sein
End Sub
Vielen Dank vorab und einen schönen sonnigen Tag :-)
LG Dietmar

Anzeige
AW: VBA-Code war richtig - Folgefrage
18.07.2013 12:09:51
Klaus
Hallo Dietmar,
beim Barcodescanner-Thema steige ich mal mit ein :-)
dass das Change-Ereignis immer eintritt,
Das stimmt so nur bedingt. Über-Pendantisch müsste man sagen, dass das Change-Ereigniss eh immer eintritt, und dann nur Codezeilen je nach target ausgeschlossen werden -- aber es ist ja klar wie du das meinst.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
Dim Wert$, x&
Wert = Target.Value
For x = 7 To 25
'If Cells(x, 2) = Wert Then Cells(x, 2) = Cells(x, 2) + 1
If Cells(x, 2) = Wert Then Cells(x, 2) = Cells(x, 2) + Range("C1").Value  'Multiplicator in   _
_
C1
Next
End If
With Range("B1")
.ClearContents
.Select
End With
Range("C1").Value = 1   '1 soll der Standardeintrag des Multiplikators sein
End Sub
Der erste Teil deines Codes ist in einem intersect-IF Block und wird ausgeschlossen, wenn deine Zelle nicht B1 ist (fett).
Der zweite Teil (den meinst du mit "tritt immer ein" ist ausserhalb dieses Blocks! Wenn auch der nur bei Change von B1 eintreten soll, dann nimm ihn mit in den Block! Einfach das EndIf verschieben, sieht dann so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
Dim Wert$, x&
Wert = Target.Value
For x = 7 To 25
'If Cells(x, 2) = Wert Then Cells(x, 2) = Cells(x, 2) + 1
If Cells(x, 2) = Wert Then Cells(x, 2) = Cells(x, 2) + Range("C1").Value  'Multiplicator  _
in C1
Next
With Range("B1")
.ClearContents
.Select
End With
Range("C1").Value = 1   '1 soll der Standardeintrag des Multiplikators sein
End If
End Sub
Jetzt wird der gesamte Code nur ausgeführt, wenn du B1 änderst.
OFFTOPIC:
Dieser Codeteil:
For x = 7 To 25
If Cells(x, 2) = Wert Then Cells(x, 2) = Cells(x, 2) + Range("C1").Value
Next
ge
fällt mir überhaupt nicht. Ich behaupte, dass geht auch ohne Schleife! Kannst du bitte mal deine Datei hochladen?
Grüße,
Klaus M.vdT.

Anzeige
ok dann steig ich eben aus ;-(
18.07.2013 12:15:27
Matthias
oT

Alles gut, Matthias?
18.07.2013 12:20:17
Klaus
Hi Matthias,
ich will dich hier doch nicht rausmobben, was soll denn der :-( bedeuten? Mich interessiert das Thema und ich habe etwas beizutragen - ist hier doch nicht unüblich, dass mehr als einer hilft. Hab ich dir damit auf den Schlips getreten?
Grüße,
Klaus M.vdT.

Antwort auf Folgefrage
18.07.2013 12:11:38
Matthias
Hallo Dietmar
Probier es so:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1")) Is Nothing Then
If Target  "" And IsNumeric(Target) Then
Dim Wert$, x&
Wert = Target.Value
For x = 7 To 25
If Cells(x, 1).Value = Wert Then Cells(x, 2).Value = Cells(x, 2) + Cells(1, 3)
Next
End If
End If
Range("B1").ClearContents
End Sub
https://www.herber.de/bbs/user/86433.xls
Gruß Matthias

Anzeige
Uiii, sehr schön - Weiterentwicklung
18.07.2013 13:15:47
Dietmar
Hallo Matthias,
ich habe die Datei mal weiterentwickelt. Deine Ansätze sind genau das, was ich brauche.
Nun ist es aber so, dass die Codenummern, die es zu berechnen gilt, nicht in einer Spalte, sondern
in drei Spalten sein werden (habe die Datei mal erweitert).
Deshalb war anfangs ja meine Frage, ob man mit NAMEN arbeiten kann; damit könnte man den zu prüfenden
Bereich ja einfach angeben (so etwa: X = Name CodeNr)
Schau mal in den VBA-Bereich, habe dort Anmerkungen hineingeschrieben.
Mein Versuch, die drei Spalten mit weiteren If-Prüfungen abzufragen ist gescheitert (grrr).
https://www.herber.de/bbs/user/86436.xls
Ferner habe in eine zweite Intersect-Prüfung eingebaut, die den Multiplikator betrifft, funktioniert auch :-)
Vielen Dank
LG
Dietmar

Anzeige
Uiii, sehr schön - Weiterentwicklung
18.07.2013 13:26:27
Dietmar
Hallo Matthias,
ich habe die Datei mal weiterentwickelt. Deine Ansätze sind genau das, was ich brauche.
Nun ist es aber so, dass die Codenummern, die es zu berechnen gilt, nicht in einer Spalte, sondern
in drei Spalten sein werden (habe die Datei mal erweitert).
Deshalb war anfangs ja meine Frage, ob man mit NAMEN arbeiten kann; damit könnte man den zu prüfenden
Bereich ja einfach angeben (so etwa: X = Name CodeNr)
Schau mal in den VBA-Bereich, habe dort Anmerkungen hineingeschrieben.
Mein Versuch, die drei Spalten mit weiteren If-Prüfungen abzufragen ist gescheitert (grrr).
https://www.herber.de/bbs/user/86436.xls
Ferner habe in eine zweite Intersect-Prüfung eingebaut, die den Multiplikator betrifft, funktioniert auch :-)
Vielen Dank
LG
Dietmar

Anzeige
hier mit einem definierten Namen ...
19.07.2013 00:16:21
Matthias
Hallo Dietmar
Du hattest in der Ausgangsfrage Folgendes stehen:
Nun möchte ich in B2 eine Codenummer eintragen. Nach dem Enter soll dieser Eintrag mit den Eintragungen im Bereich des Namens 'CodeNr" (=A7 bis A17) geprüft werden..
Hättest Du gleich die tatsächlichen Bereiche mitgeteilt, wäre es auch schneller gegangen.
Ich hielt es nicht für notwendig für die paar Zellen erst einen Namen zu definieren.
Hier nun eine Lösung mit Deinem definierten Namen.
https://www.herber.de/bbs/user/86450.xls
Gruß Matthias

Anzeige
Super ! Danke! mit Text
19.07.2013 01:07:47
Dietmar
Hallo Matthias,
vielen Dank für die turbo-tolle Lösung.
Du hast recht, aber ich wollte mich vortasten und möglichst wenig Aufwand machen.
Das Teilergebnis wollte ich dann weiterentwicklen, weil ich ja hier im Forum schon einiges dazugelernt habe.
Whatever, nun ist es anders gekommen. 1000 Dank für den Code. So hatte ich ihn mir vorgestellt.
Ich habe mir einen Barcode-Scanner (USB-Anschluss) bestellt; und zwar den Metrologic Voyager MS 9520. Sobald er da ist werde erste Tests durchführen und bin zuversichtlich, dass Dein Code dann funzt.
Du hast mir sehr geholfen.
Lieben Dank und eine gute Nacht :-)
LG
Dietmar
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige