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

SheetChange in Vba einbinden?

SheetChange in Vba einbinden?
31.05.2004 16:43:24
maggie
hallo,
arbeite mit einer vb form die ein excel-diagramm besitzt, meine frage:
wie kann bzw. soll ich den folgenden code in vba einbinden, das es funktioniert ?
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

habe es in die arbeitsmappe rein getan aber der compiler meckert.
bei: controls
Set myTabelle = Me.Controls("Chart1").object.Sheets(1)
kann mir jemand helfen?
maggie

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

Betreff
Datum
Anwender
Anzeige
AW: SheetChange in Vba einbinden?
31.05.2004 17:26:26
andre
Hallo Maggie,
erst mal nur zum Ort des codes:
der Obere gehört in das modul von Tabelle1, und der untere in das userform.
AW: SheetChange in Vba einbinden?
31.05.2004 23:38:16
maggie
hallo,
Tabelle1 ist klar.
aber mit der userform ist unklar, denn ich arbeite mit vb6 mit einer form wo excel-diagramm eingebunden ist, und in vb6 heisst es form_init... und nicht userform_init.
ist dann mit der userform die arbeitsmappe gemeint, oder die form in vb6 projekt?
mfg
maggie
AW: SheetChange in Vba einbinden?
01.06.2004 08:04:32
andre
Hallo Maggie,
..das form.
Gruss Andre
AW: SheetChange in Vba einbinden?
01.06.2004 11:26:00
maggie
hallo,
wenn du form in vb meinst, funktioniert es irgendwie nicht?????????
habe es schon versucht.
und jetzt?
mfg
maggie
Anzeige
AW: SheetChange in Vba einbinden?
01.06.2004 20:53:30
andre
Hallo Maggie,
wo kommt das Original denn her? Im geposteten code steht Userform, das könnte also VBA sein, dann schreibst Du, es wäre ein Form aus VB.... Ich habe es mal im Excel getestet, die funktionieren auch in VBA (XP) nicht auf Anhieb. Ich habe allerdings auch noch nicht mit diesen Chart-Objekten gearbeitet. Vor XP ging das ja etwas anders ... Wenn Du noch Hilfe brauchst, setze den Beitrag auf offen. Ansonsten schaue auch mal nach
http://www.activevb.de/tipps/tipkat/kat4.html
oder
http://www.vbfun.de/
Anzeige
AW: SheetChange in Vba einbinden?
01.06.2004 00:54:20
Kurt
Was soll das für ein Objekt sein?
Me.Controls("Chart1").object.Sheets(1)

Kurt
AW: SheetChange in Vba einbinden?
01.06.2004 11:23:46
maggie
hallo,
das ist ein objekt von einem excel - diagramm, was sich in meinem vb projekt-form befindet.
das problem ist wahrscheinlich, das dies hier ein vba code ist, oder?
also ich habe in meinem vb-projekt, auf meiner form ein excel diagramm eingebunden und möchte in der excel tabelle berechnungen durchführen, die graphisch dargestellt werden. ich möchte gern das alle spallten aufeinander reagieren und da kommt es zum zirkelbezug.
ein freund hat mir dann in vba diesen code geschrieben der das tut was ich möchte, leider kann ich diesen nicht einbinden.
also in tabelle1 habe ich _____sheetchange____ eingebunden.
aber da ich nicht mit der userform von vba arbeite weiss ich nicht wie ich es mit der init anweisung machen soll, das es funktioniert.
habe schon versucht in vb anstatt user_form einfach form aber nein.
weiss jemand eine lösung?
mfg
maggie
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige