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

Additions-Makro für Bereiche (Codes)???

Additions-Makro für Bereiche (Codes)?
06.10.2004 10:36:15
Stephan
Hallo,
mein erstes Problem - ein Zahl in einer Zelle "automatisch" mit dem bereits dort enthaltenen Wert zu addieren - wurde Dank der Unterstützung von Beate bestens gelöst ... Hier die Codes:
(in "WorkSheet")
Dim oldvalue As Double
--------------------------------------------------------

Private Sub Worksheet_Change(ByVal Target As Excel.range)
If Target.Address = "$A$80" Then
On Error GoTo fixit
Application.EnableEvents = False
Target.Value = 1 * Target.Value + oldvalue
oldvalue = Target.Value
fixit:
Application.EnableEvents = True
End If
End Sub

und
(in "Workbook")

Private Sub Workbook_Open()
Worksheets("Sep").range("$A$80").Value = Worksheets("Sep").range("$A$80").Value
End Sub

Das zweite Problem, diese Funktion für (z.B. zwei)Bereiche (z.B. A3:A6 und B3:B6) einzurichten, konnte bisher leider nicht gelöst werden!!!
Im Prinzip denke ich, muß bei Aufruf der Tabelle die entsprechenden Zellen der Bereiche jeweils in eine eindeutig der jeweiligen Zelle zuzuordnenden Variable gelesen und gespeichert werden und bei der Addition in einer Zelle eben diese Variable mit dem neuen (eigegebenen) Wert addiert und in die entsprechende Zelle zurückgeschrieben werden. LEIDER REICHEN MEINE VB-PROGRAMMIERKÜNSTE NICHT AUS !!!!
Es wäre eine große Hilfe, wenn mir einer von Euch die Lösung des Problems in Form von Codes mitteilen könnte :-)))
Ich wünsche noch einen schönen Tag und hoffe auf Hilfe
Stephan

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

Betreff
Datum
Anwender
Anzeige
AW: Additions-Makro für Bereiche (Codes)?
Reinhard
Hi Stephan,
ungetestet:

Dim oldvalue(8) As Double
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
On Error GoTo fixit
Application.EnableEvents = False
Select Case Target.Address(0, 0)
Case "A80"
Range("A80") = Range("A80") + oldvalue(0)
oldvalue(0) = Range("A80")
Case "A3", "A4", "A5", "A6"
Range("A" & Target.Column) = Range("A" & Target.Column) + oldvalue(Target.Column - 2)
oldvalue(Target.Column - 2) = Range("A" & Target.Column)
Case "B3", "B4", "B5", "B6"
Range("B" & Target.Column) = Range("B" & Target.Column) + oldvalue(Target.Column + 2)
oldvalue(Target.Column + 2) = Range("B" & Target.Column)
End Select
fixit:
Application.EnableEvents = True
End Sub
Private Sub Workbook_Open()
With Worksheets("Sep")
oldvalue(0) = .Range("A80")
For n = 1 To 8
If n <= 4 Then
oldvalue(n) = .Cells(n + 2, 1)
Else
oldvalue(n) = .Cells(n - 2, 1)
End If
Next n
End With
End Sub

Gruß
Reinhard
Anzeige
AW: Additions-Makro für Bereiche (Codes)?
06.10.2004 13:44:00
Stephan
Hallo Reinhard,
danke für Deine Mühe!
Ich habe Deine Codes testweise übertragen - leider passiert nichts (Bis auf die Zelle A80, aber das ging schon vorher...).
In keiner Zelle der Bereiche A1:A4 / B1:B4 läßt sich ein neuer Wert mit dem in der Zelle vorhandenem alten Wert addieren, resp. wird der addierte Wert nicht eingetragen. :-((
Hast Du noch eine Idee?
Gruß
Stephan
AW: Additions-Makro für Bereiche (Codes)?
Reinhard
Hi Stephan,
habe es jetzt getestet,(WB-Open nicht) hatte die 50/50-Chance bei Colums/Rows vergeigt :-))

Dim oldvalue(8) As Double
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
On Error GoTo fixit
Application.EnableEvents = False
Select Case Target.Address(0, 0)
Case "A80"
Range("A80") = Range("A80") + oldvalue(0)
oldvalue(0) = Range("A80")
Case "A3", "A4", "A5", "A6"
Range("A" & Target.Row) = Range("A" & Target.Row) + oldvalue(Target.Row - 2)
oldvalue(Target.Row - 2) = Range("A" & Target.Row)
Case "B3", "B4", "B5", "B6"
Range("B" & Target.Row) = Range("B" & Target.Row) + oldvalue(Target.Row + 2)
oldvalue(Target.Row + 2) = Range("B" & Target.Row)
End Select
fixit:
Application.EnableEvents = True
End Sub

Gruß
Reinhard
Anzeige
AW: Additions-Makro für Bereiche (Codes)?
06.10.2004 15:34:49
Stephan
Hallo Reinhard,
einfach SUPER - funktioniert bestens mit der Addition :-))
Ein Problem bleibt leider :-((
Wenn ich die Tabelle speichere und dann wieder aufrufe, dann gehen die in den Zellen stehenden Beträge "verloren" wenn ich addiere und nur der addierte Wert bleibt in den Zellen.
Nach der 2. Addition jedoch summieren sich die dann eigegebenen Beträge wieder auf.
Es sieht so aus, als würden die in den Zellen stehenden Werte bei Aufruf der Tabelle nicht gespeichert werden, wodurch beim ersten Mal das Programm keinen Wert zur Addition hat (also eine NULL) und dann diese NULL mit dem neuen Wert addiert - was eben gleich dem neuen Wert ist.
Was kann man machen, damit bei Start die in den Zellen eingetragenen Werte registriert werden und somit der Addition zur Verfügung stehen?
Vielen Dank für Deine Mühe :-)))
Stephan
Anzeige
jetzt klappts :-)
Reinhard
Hi Stephan,

Dim oldvalue(8) As Double
Dim speich As Boolean
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If speich = False Then Call starten
If Target.Cells.Count > 1 Then Exit Sub
On Error GoTo fixit
Application.EnableEvents = False
Select Case Target.Address(0, 0)
Case "A80"
Range("A80") = Range("A80") + oldvalue(0)
oldvalue(0) = Range("A80")
Case "A3", "A4", "A5", "A6"
Range("A" & Target.Row) = Range("A" & Target.Row) + oldvalue(Target.Row - 2)
oldvalue(Target.Row - 2) = Range("A" & Target.Row)
Case "B3", "B4", "B5", "B6"
Range("B" & Target.Row) = Range("B" & Target.Row) + oldvalue(Target.Row + 2)
oldvalue(Target.Row + 2) = Range("B" & Target.Row)
End Select
fixit:
Application.EnableEvents = True
End Sub
Sub starten()
With Worksheets("Sep")
oldvalue(0) = .Range("A80")
For n = 1 To 8
If n <= 4 Then
oldvalue(n) = .Cells(n + 2, 1)
Else
oldvalue(n) = .Cells(n - 2, 2)
End If
Next n
End With
speich = True
End Sub
Sub WennNixMehrPassiert()
Application.EnableEvents = True
End Sub

Gruß
Reinhard
Anzeige
jetzt klappts :-) - nur noch ein kleiner bug :-(
Stephan
Hallo Reinhard,
Wirklich SUPER ! Es klappt wie "bestellt" ...... NUR ein winziger Fehler ist noch vorhanden :-(
Wenn man die Tabelle aufruft und den ERSTEN (!) Wert in einer Zelle eines Bereiches eingibt (der mit dem vorhandenen Wert addiert werden soll) wird der neu eingegebene Wert verdoppelt, aber leider nicht mit dem alten Wert addiert....
Alle weiteren Eingaben (Additionen) funktionieren dann einwandfrei und problemlos !!
Das Problem tritt immer nur bei der allerersten Eingabe und nicht mehr danach auf.
Könntest Du das noch einmal überprüfen? Leider sind meine VB-Programmierkünste absolut unterentwickelt :-((
Apropos: Kennst Du ein Buch, das mich in einfacher Weise an die VB-Programmierung unter Excel heranführen kann?
Danke erst einmal für Deine bisherigen Bemühungen!
Eine gute Nacht wünscht
Stephan
Anzeige
AW: jetzt klappts :-) - nur noch ein kleiner bug :
Reinhard
Hi Stephan,
kurse zum kostenlosen Runterladen:
https://www.herber.de/forum/index.htm?https://www.herber.de/forum/archiv/212to216/t215250.htm
Ich habe kein Buch, ich erlernte mein punktuelles Halbwissen hier im Forum.
Aber schau mal hier wegen des Buches:
https://www.google.de/search?hl=de&q=vba+buch+site%3Awww.herber.de&btnG=Google-Suche&meta=lr%3Dlang_de
Wegen des Fehlers, ich schaue mal nach...
Gruß
Reinhard
Anzeige
jetzt klappte Zewiter Akt :-)
Reinhard
Hi Stephan,
konnte jetzt keinen Fehler mehr feststellen.
Gruß
Reinhard

Dim oldvalue(8) As Double
Dim speich As Boolean
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
On Error GoTo fixit
Application.EnableEvents = False
Select Case Target.Address(0, 0)
Case "A80"
Range("A80") = Range("A80") + oldvalue(0)
oldvalue(0) = Range("A80")
Case "A3", "A4", "A5", "A6"
Range("A" & Target.Row) = Range("A" & Target.Row) + oldvalue(Target.Row - 2)
oldvalue(Target.Row - 2) = Range("A" & Target.Row)
Case "B3", "B4", "B5", "B6"
Range("B" & Target.Row) = Range("B" & Target.Row) + oldvalue(Target.Row + 2)
oldvalue(Target.Row + 2) = Range("B" & Target.Row)
End Select
fixit:
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If speich = True Then Exit Sub
With Worksheets("Sep")
oldvalue(0) = .Range("A80")
For n = 1 To 8
If n <= 4 Then
oldvalue(n) = .Cells(n + 2, 1)
Else
oldvalue(n) = .Cells(n - 2, 2)
End If
Next n
End With
speich = True
End Sub
Sub WennNixMehrPassiert()
Application.EnableEvents = True
End Sub

Anzeige
Herzlichen Dank !!
08.10.2004 10:04:09
Stephan
Hallo Reinhard,
ich möchte nicht versäumen, Dir meinen herzlichsten Dank für Deine große und erfolgreiche (!!) Hilfe auszusprechen. Alles funktioniert nunh bestens und es wäre mir eine Freude, wenn ich Dir gelegentlich auch einmal helfen könnte (weniger in Excel-Fragen, aber evtl. bei einem Urlaub in Schweden ? - siehe meine eMail-Adresse !!)
Ich wünsche noch einen schönen Tag!
Stephan Metreveli
info@schweden-immobilien.com
ui, danke dir
Reinhard
Hallo Stephan,
werde ggfs. darauf zurückkommen, bis dahin träume ich von sicher sehr netten Schwedinnen:-)
Gruß
Reinhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige