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

Worksheet Change?

Worksheet Change?
07.12.2005 11:42:20
Manuel
Hallo mal wieder,
Ich habe folgendes Problem:
Ich habe einen Excel Sheet. Darauf werden ab Zeile 11 Daten eingetragen (pro Zeile ein Datensatz: Name | Preis | Währung | Anzahl | Summe.
Ich stelle über vb fest wieviele Einträge ab Zeile 11 vorhanden sind und Summiere diese in der der Zeile unter dem letzten Eintrag. das funktioniert auch wenn ich es in Worksheet_activate reinschreibe. Aber dazu muss man ja erst auf ein anderen Sheet klicken und dann wieder zurück auf den mit den Einträgen.
Was ich aber möchte ist:
wenn eine Zeile ergänzt wurde in Spalte A dann soll der vba code nach der Änderung ausgeführt werden und die Summe unter dem ergänzten Datensatz stehen.
Vielleicht mit Change? oder so
Code
__________________________________________________________

Private Sub Worksheet_activate()
Dim EZ, LZ, Dif As Integer ' Erste Zeile , Letzte Zeile,
EZ = 11
Cells(EZ, 1).Select ' erste Zelle wird angewählt
Selection.End(xlDown).Select ' sprung zur letzten Zelle in der Spalte
LZ = ActiveCell.Row  ' letztezeile = letzte Zelle in der Reihe
'MsgBox "" & -(LZ - EZ) & ""
Dif = (LZ + 1) - EZ
' Löschen der Werte
Range("AD" & EZ & ":AK" & LZ & "").ClearContents
'Eintragen der Formeln
'Materialpreis
Range("AD" & EZ & ":AD" & LZ & "") = "=(IF(RC[-11]=""EUR"",RC[-13]*RC[-12]*R5C2,IF(RC[-11]=""GBP"",RC[-13]*RC[-12]*R6C2,IF(RC[-11]=""USD"",RC[-13]*RC[-12])))*(1+RC[-8]))"
' Value Add
Range("AE" & EZ & ":AE" & LZ & "") = "=(IF(RC[-10]=""EUR"",RC[-11]*R5C2,IF(RC[-10]=""GBP"",RC[-11]*R6C2,RC[-11])))"
'NBW
Range("AF" & EZ & ":AF" & LZ & "") = "=NPV(R7C2,RC[1],RC[2],RC[3],RC[4],RC[5])"
' Spend 1
Range("AG" & EZ & ":AG" & LZ & "") = "=(RC[-3]*(1+RC[-26])+RC[-2]*(1+RC[-21]))*RC[-31]"
'Spend 2
Range("AH" & EZ & ":AH" & LZ & "") = "=(RC[-4]*(1+RC[-27])*(1+RC[-26])+RC[-3]*(1+RC[-22])*(1+RC[-21]))*RC[-31]"
' Spend 3
Range("AI" & EZ & ":AI" & LZ & "") = "=(RC[-5]*(1+RC[-28])*(1+RC[-27])*(1+RC[-26])+RC[-4]*(1+RC[-23])*(1+RC[-22])*(1+RC[-21]))*RC[-31]"
'Spend 4
Range("AJ" & EZ & ":AJ" & LZ & "") = "=(RC[-6]*(1+RC[-29])*(1+RC[-28])*(1+RC[-27])*(1+RC[-26])+RC[-5]*(1+RC[-24])*(1+RC[-23])*(1+RC[-22])*(1+RC[-21]))*RC[-31]"
' Spend 5
Range("AK" & EZ & ":AK" & LZ & "") = "=(RC[-7]*(1+RC[-30])*(1+RC[-29])*(1+RC[-28])*(1+RC[-27])*(1+RC[-26])+RC[-6]*(1+RC[-25])*(1+RC[-24])*(1+RC[-23])*(1+RC[-22])*(1+RC[-21]))*RC[-31]"
'R1C1 Formel für SUMME
Range("AD" & LZ + 1 & ":AK" & LZ + 1 & "") = "=SUM(R[-" & Dif & "]C:R[-1]C)"
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet Change?
07.12.2005 11:46:06
Dr.
Hi,
Du hast Dir die Antwort doch schon gegeben.
AW: Worksheet Change?
07.12.2005 12:16:22
Manuel
Ok ,
aber wie soll ich es umsetzten?
Weil wenn ich es in change oder calculate einfach reinschreibe, dann bekomme ich immer endlosschleifen!!
AW: Worksheet Change?
07.12.2005 12:21:57
Manuel
Was ich zusätzlich noch wollte ist , daß wenn ich einen neuen eintrag hinzufüge, die Zeile auch automatisch formatiert wird(striche , schrfitgröße etc..)
AW: Worksheet Change?
07.12.2005 12:22:10
Matthias
Hallo Manuel,
bevor du im Code innerhalb von Worksheet_Change() eine Zelle änderst:
Application.EnableEvents = False
und (Wichtig!) am Ende wieder
Application.EnableEvents = True
Gruß Matthias
AW: Worksheet Change?
07.12.2005 13:15:54
Manuel
Danke,
Das hat geholfen! Genau das wars!
noch eine Frage: Ich will den Range der aktuelle Zelle speichern bevor ich den code laufen lasse um am Ende diese zelle iweder auszuwählen.
habe:
dim lastCell as range
set lastCell = avtiveCell.range (oder . adress) aber irgendwie funzt das nicht.
Anzeige
AW: Worksheet Change?
07.12.2005 12:23:03
Reinhard
Hola Manuel,
im worksheet_Change Ereignis Code:
application.enableevents=false
Code
application.enableevents=true
und schau mal zu formulalocal, R1C1 kann man schlecht lesen.
Gruß
Reinhard
ps:Das Forum lebt auch von Rückmeldungen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige