Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
428to432
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
428to432
428to432
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hochzählen

Hochzählen
18.05.2004 13:42:05
Josef
Hallo!
Ich habe bei der Recherche folgenden Code gefunden:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address <> "$A$1" Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
If IsEmpty(Target) Then Exit Sub
If Not IsNumeric(Target.Value) Then Exit Sub
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
Target.Offset(0, 1).Value = _
Target.Offset(0, 1).Value + Target.Value
Target.Offset(0, 2).Value = _
Target.Offset(0, 2).Value + 1
ERRORHANDLER:
Application.EnableEvents = True
End Sub

Mit diesem Code wird nach der eingabe in eine Zelle rechts daneben in der Zelle hochgezählt.
Ich habe nun folgendes Problem.
Ich habe zwei Arbeitsblätter.
Im ersten Arbeitsblatt werden immer wieder im gleichen Format neue Werte jede Woche reinkopiert. Das heißt, die alten Werte werden überschrieben.
Im zweiten Arbeitsblatt gibt es eine angeordnete Zellenvorgabe wo jeweils der richtige Wert dazugezählt werden soll.
Das würde bedeuten:
Kommt im Arbeitsblatt 1 in der Zelle c7 der Wert 10,00 oder 10 hinein so soll der Wert auch in der zweiten Tabelle z.B. in Zelle d9 eingetragen werden.
Kommt jetzt im ersten Arbeitsblatt in Zelle c7 ein neuer Wert hinzu so soll im anderen Arbeitsblatt in der Zelle d9 hochgezählt werden.
Gäbe es hierfür bitte vielleicht eine Lösung?
Danke
Josef

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hochzählen
19.05.2004 07:20:51
Heinz
Hallo Josef,
ich habe mal den Übertrag in die Tabelle2 in die Zelle D9 hinzugefügt.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address <> "$A$1" Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
If IsEmpty(Target) Then Exit Sub
If Not IsNumeric(Target.Value) Then Exit Sub
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + Target.Value
Target.Offset(0, 2).Value = Target.Offset(0, 2).Value + 1
With Worksheets("Tabelle2").Range("D9")
.Value = .Value + Target.Value
End With
ERRORHANDLER:
Application.EnableEvents = True
End Sub

Gruß
Heinz
Anzeige
AW: Hochzählen
20.05.2004 10:14:59
Josef
Hallo Heinz!
Ich habe leider erst jetzt Deinen Thread gesehen. Ich danke Dir recht herzlich für Deine Mühe und Deine Lösung.
So hätte ich es gemeint gehabt.
wie müßte man den Code bitte noch verändern
wenn z.b. der Wert von A1 in Tabelle1 in Tabelle2 D9
A4 in Tabelle1 in Tabelle2 E12 usw.
wäre?
Danke
Josef
AW: Hochzählen
20.05.2004 10:33:31
Heinz
Hallo Josef,
Hier eine weitere Variante:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'in folgenden Fällen wird das Makro beendet:
If Target.Column <> 1 Then Exit Sub  'wenn der Eintrag nicht in Spalte A erfolgt
If Target.Cells.Count > 1 Then Exit Sub 'wenn mehr als eine Zelle markiert sind
If IsEmpty(Target) Then Exit Sub     'wenn der Inhalt der aktiven Zelle leer ist
If Not IsNumeric(Target.Value) Then Exit Sub 'wenn der Eintrag keine Zahl ist
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
With Worksheets("Tabelle2")
Select Case Target.Row
Case Is = 1        'Tabelle1.A1 => Tabelle2.D9
.Range("D9").Value = .Range("D9").Value + Target.Value
Case Is = 4        'Tabelle1.A4 => Tabelle2.E12
.Range("E12").Value = .Range("E12").Value + Target.Value
Case Is = 6        'Tabelle1.A6 => Tabelle2.F17
.Range("F17").Value = .Range("F17").Value + Target.Value
End Select
ERRORHANDLER:
Application.EnableEvents = True
End Sub

Gruß
Heinz
Anzeige
AW: Hochzählen
20.05.2004 12:24:23
Josef
Hallo Heinz!
Danke für Deine schnelle Antwort.
So würde alles funktionieren.
Bei den Eingaben in den Zellen A1;A4;A7; werde die Werte in Tabelle2 D9;E12;F17 eingetragen.
Wenn ich jetzt z.b. nicht nur spalte A sonderm auch B,C und D hätte bräuchte ich praktisch den Code nur erweitern indem ich den jeweiligen Code von oben noch einmal unten mit der dazugehörigen Spalte 2 z.B. daranhänge?
Josef
AW: Hochzählen
20.05.2004 12:47:48
Heinz
Hallo Josef,
so einfach ist das nicht. Da ich am Anfang alle anderen Spalten ausschließe, funktioniert der weitere Code dann nicht mehr.
Man müsste wissen, was du genau alles brauchst, um dann den Code zu adaptieren und zu optimieren.
Gruß
Heinz
Anzeige
AW: Hochzählen
20.05.2004 13:01:26
Josef
Hallo Heinz!
Der Vorgang wäre folgender:
Über ein Host Laufwerk kommen regelmäßig Daten welche z. B. in die Tabelle1 kopiert werden. die Daten werden immer wieder in die gleichen Zellen kopiert.
Das würde jetzt folgendes bedeuten:
Werte in Tabelle1:
C4; D4; E4;
C5; D6, E6;
C9; D9; E9;
C10; D10; E10;
C13; D13; E13;
C14; D14; E14;
Zellen in Tabelle2 wo hochgezählt werden soll:
Tabelle1 C4 in Tabelle2 D6
Tabelle1 D4 in Tabelle2 D7
Tabelle1 E4 in Tabelle2 D8
Tabelle1 C5 in Tabelle2 E6
Tabelle1 C6 in Tabelle2 F6
Tabelle1 C7 in Tabelle2 G6
usw.
Dein Beispiel von vorhin wäre das goldrichtige wenn auch andere Spalten angenommen werden könnten.
Danke
Josef
Anzeige
AW: Hochzählen
20.05.2004 13:45:35
Heinz
Hallo Josef,
da ich kein wirkliches System in deiner Beschreibung erkennen kann (die Abstände der Zeilen - C4-C5-C9-C10-C13-C14 usw sind nicht gleich, die Zielzelle iat nicht immer relativ dieselbe usw.) bleibt m.E. nur folgende Variante:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'in folgenden Fällen wird das Makro beendet:
If Target.Column < 3 And Target.Column > 5 Then Exit Sub  'wenn der Eintrag nicht in Spalte C, D, E erfolgt
If Target.Cells.Count > 1 Then Exit Sub 'wenn mehr als eine Zelle markiert sind
If IsEmpty(Target) Then Exit Sub     'wenn der Inhalt der aktiven Zelle leer ist
If Not IsNumeric(Target.Value) Then Exit Sub 'wenn der Eintrag keine Zahl ist
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
With Worksheets("Tabelle2")
Select Case Target.Row
Case Is = 4        'Tabelle1 Eintrag in der Zeile 4
Select Case Target.Column
Case Is = 3        'Tabelle1 Eintrag in C4
.Range("D6").Value = .Range("D6").Value + Target.Value
Case Is = 4        'Tabelle1 Eintrag in D4
.Range("D7").Value = .Range("D7").Value + Target.Value
Case Is = 5        'Tabelle1 Eintrag in E4
.Range("D8").Value = .Range("D8").Value + Target.Value
End Select
Case Is = 5        'Tabelle1 Eintrag in der Zeile 5
Select Case Target.Column
Case Is = 3        'Tabelle1 Eintrag in C5
.Range("E6").Value = .Range("E6").Value + Target.Value
Case Is = 4        'Tabelle1 Eintrag in D5
.Range("E7").Value = .Range("E7").Value + Target.Value
Case Is = 5        'Tabelle1 Eintrag in E5
.Range("E8").Value = .Range("E8").Value + Target.Value
End Select
' usw.
End Select
End With
ERRORHANDLER:
Application.EnableEvents = True
End Sub

ODER VIELLICHT NOCH ETWAS EINFACHER:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'in folgenden Fällen wird das Makro beendet:
If Target.Column < 3 And Target.Column > 5 Then Exit Sub  'wenn der Eintrag nicht in Spalte C, D, E erfolgt
If Target.Cells.Count > 1 Then Exit Sub 'wenn mehr als eine Zelle markiert sind
If IsEmpty(Target) Then Exit Sub     'wenn der Inhalt der aktiven Zelle leer ist
If Not IsNumeric(Target.Value) Then Exit Sub 'wenn der Eintrag keine Zahl ist
Application.EnableEvents = False
On Error GoTo ERRORHANDLER
With Worksheets("Tabelle2")
Select Case Target.Address
Case Is = "$C$4"        'Tabelle1 Eintrag in C4
.Range("D6").Value = .Range("D6").Value + Target.Value
Case Is = "$D$4"        'Tabelle1 Eintrag in D4
.Range("D7").Value = .Range("D7").Value + Target.Value
Case Is = "$E$4"        'Tabelle1 Eintrag in E4
.Range("D8").Value = .Range("D8").Value + Target.Value
Case Is = "$C$5"        'Tabelle1 Eintrag in C5
.Range("E6").Value = .Range("E6").Value + Target.Value
Case Is = "$D$5"        'Tabelle1 Eintrag in D5
.Range("E7").Value = .Range("E7").Value + Target.Value
Case Is = "$E$5"        'Tabelle1 Eintrag in E5
.Range("E8").Value = .Range("E8").Value + Target.Value
' usw.
End Select
End With
ERRORHANDLER:
Application.EnableEvents = True
End Sub

Gruß
Heinz
Anzeige
AW: Hochzählen
20.05.2004 13:59:36
Josef
Hallo Heinz!
Danke für Deine Geduld und Deine Hilfe.
Noch zur Erklärung weil mein voriger Thread vielleicht ein bißchen verwirrt klang.
In Tabelle2 ist eine vorbereitete Maske in welche die Werte von der Tabelle1 eingetragen werden soll. Die Werte in der Tabelle1 kommen jedoch in anderen Zellen als in Tabelle2.
Ich habe deswegen eine Lösung gesucht, wo praktisch die immer neu einlangenden Werte in der richtigen Zelle in der Maske in Tabelle2 hochgezählt werden. Nach einem Quartal wird die Maske oder besser gesagt die Tabelle ausgedruckt und verschickt.
Ich danke Dir nochmals und wünsche Dir noch einen schönen Feiertag.
Josef
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige