AW: change ereignis funktioniert nicht
28.05.2004 15:03:40
maggie
hallo,
also,
das ist ein vba das ich bekommen habe und ich arbeite mit vb.
kann man den code für vb ändern?
und wie?
ich verzweifel schon!
das ist der vba code:
Dim myTabelle As Object 'Excel.Worksheet '
Private Sub Chart1_SheetChange(ByVal Sh As OWC10.Worksheet, ByVal Target As OWC10.Range)
Dim AktProz As Double, Gesamt As Double, Groesser As Double, Kleiner As Double, Zeilen As Long
'Prüfen ob richtige Tabelle
If Sh.Name <> "Tabelle1" Then Exit Sub
'Anzahl Datenzeilen
Zeilen = (Sh.Range("ProzKumX").Row + Sh.Range("ProzKumX").Rows.Count - 1)
'Prüfen ob veränderte Zelle eine Kumulierte Prozenzahl ist
If (Target.Column <> Sh.Range("ProzKumX").Column) Or (Target.Row = 1) Or (Target.Row > Zeilen) Then Exit Sub
On Error GoTo Ende
'Events ausschalten, damit diese Procedure sich nicht selbst aufruft
Target.Application.EnableEvents = False
'eingebenen Wert merken
AktProz = Target.Value
'Formel wiederherstellen
Target.Formula = "=(C" & Target.Row & "*100/E1)"
' Prüfen, ob 1. Zeile < 100
If AktProz <= 0 Or AktProz > 100 Then
MsgBox "0 <= Prozente < 100 !"
GoTo Ende
ElseIf Target.Row = 2 And AktProz = 100 Then
MsgBox "In der 1. Zeile können nicht 100 Prozent erreicht werden !"
GoTo Ende
' Prüfen, ob letzte Zeile = 100
ElseIf Target.Row = Zeilen Then
MsgBox "In der letzten Zeile müssen 100 Prozent erreicht werden !"
GoTo Ende
End If
'Zielwertberechnung
Groesser = Target.Application.Evaluate("Sum(A" & Target.Row + 1 & ":A" & Zeilen & ")")
Kleiner = Target.Application.Evaluate("Sum(A1:A" & Target.Row - 1 & ")")
Gesamt = Groesser / (1 - (AktProz / 100))
Target.Offset(0, -2).Value = Gesamt * (AktProz / 100) - Kleiner
Ende:
'Events einschalten
Target.Application.EnableEvents = True
End Sub
Private Sub UserForm_Initialize()
Dim i As Long
Set myTabelle = Me.Controls("Chart1").object.Sheets(1)
myTabelle.Application.EnableEvents = False
With myTabelle
.Cells(1, 1).Value = "Delta X"
.Cells(1, 2).Value = "Y-Wert"
.Cells(1, 3).Value = "Kum X"
.Cells(1, 4).Value = "KumXProz"
.Cells(1, 5).Formula = "=Sum(A:A)"
For i = 2 To 10
.Cells(i, 1) = Rnd() * 100 - 30
.Cells(i, 2) = Rnd() * 100
.Cells(i, 3).Formula = "=Sum(A2:A" & i & ")"
.Cells(i, 4).Formula = "=(C" & i & "*100/E1)"
Next
End With
myTabelle.Parent.Names.Add Name:="Tabelle1!ProzKumX", RefersToR1C1:="=OFFSET(Tabelle1!R1C4,1,,COUNTA(Tabelle1!C1)-1,)"
myTabelle.Application.EnableEvents = True
End Sub
mfg
maggie