Betrifft: Value multiplizieren
von: Chris
Geschrieben am: 02.02.2010 11:23:18
Hallo zusammen.
Leider kenne ich mich mit VBA nicht so gut aus, weshalb auch folgender Code nicht funktioniert:
Rng2.Value * X.Value/Y.Value = Rng1.Value
Rng1, Rng2, X und Y sind alle als Range definiert.
Betrifft: Vielleicht geht's umgekehrt ??
von: Renee
Geschrieben am: 02.02.2010 11:30:05
Hi Chris,
Rng1.Value = Rng2.Value * X.Value / Y.ValueGreetZ Renée
Betrifft: AW: Vielleicht geht's umgekehrt ??
von: Chris
Geschrieben am: 02.02.2010 11:38:43
Leider nein,
es ist auch glaube ich wichtig, in welcher Reihenfolge die stehen, da der Code vollständig so lauten wird:
If IsEmpty(Target) Then GoTo errorcatcher 'falls die Zellen leer sind springe zu errorcatcher
Sub () ... If Not Intersect(Rng1, Target) Is Nothing Then 'falls Rng1 mit Daten gefüllt Rng2.Value * X.Value / Y.Value = Rng1.Value 'werden Daten in Rng2 und Rnd3 kopiert Rng3.Value * X.Value / Y.Value = Rng1.Value End If ... End Sub
Betrifft: Das ist ein eindeutiger Syntaxverstoss,...
von: Luc:-?
Geschrieben am: 02.02.2010 12:05:16
...Chris,
wie es auch schon Renée angedeutet hatte. = kann als Vgls- oder als Zuweisungsoperator dienen. Links vor einem Zuweisungsoperator muss immer der-/dasjenige stehen, dem der nach dem Operator stehende Ausdruck zugewiesen wird. Wird = als Vglsoperator benutzt, formal ist das hier der Fall, kann der Ausdruck nicht einfach so dastehen; er muss entweder ebenfalls etwas zugewiesen wdn oder in ein ganzes Vglskonstrukt eingebettet sein → If vglsausdruck Then...
Gruß Luc :-?
Betrifft: Richtig, wichtig ist die Richtung! ;-)
von: Renee
Geschrieben am: 02.02.2010 12:57:30
Hi Chris,
Leider nein, es ist auch glaube ich wichtig, in welcher Reihenfolge die stehen
Betrifft: AW: Richtig, wichtig ist die Richtung! ;-)
von: Chris
Geschrieben am: 02.02.2010 13:23:30
Anbei der ganze Code. Ziel: Falls ich in Rng1 oder Rng2 oder Rng3 einen Wert schreibe, soll dieser Wert verknüpft mit X, Y, Z usw. in die freien Rng kopiert werden. In meinem Beispiel wäre das:
Falls ich den Wert 10 in eine der Zellen von Rng1 schreibe, soll dieser Wert multipliziert mit der entsprechenden Zelle von X dividiert durch Y werden und dann die Zellen von Rng2 und Rng3 kopiert werden. Das Ganze muss ich dann auch noch analog für die anderen Rng machen (bisher nur die 1 Code-Zeile!)
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False On Error GoTo errorcatcher Dim X As Range Dim Y As Range Dim Z As Range Dim A As Range Dim B As Range Dim C As Range Dim Rng1 As Range Dim Rng2 As Range Dim Rng3 As Range Set X = Range("E74:Q74") Set Y = Range("E82:Q82") Set Z = Range("E142:Q142") Set A = Range("E144:Q144") Set B = Range("E199:Q199") Set C = Range("E203:Q203") Set Rng1 = Range("E78:Q78") Set Rng2 = Range("E143:Q143") Set Rng3 = Range("E201:Q201") If IsEmpty(Target) Then GoTo errorcatcher If Not Intersect(Rng1, Target) Is Nothing Then Rng2.Value * X.Value / Y.Value = Rng1.Value Rng3.Value = Rng1.Value End If If Not Intersect(Rng2, Target) Is Nothing Then Rng1.Value = Rng2.Value 'analog zu oben Rng3.Value = Rng2.Value End If If Not Intersect(Rng3, Target) Is Nothing Then Rng1.Value = Rng3.Value Rng2.Value = Rng3.Value End If errorcatcher: Application.EnableEvents = True End Sub
Betrifft: föllich ferkehrt
von: Rudi Maintaire
Geschrieben am: 02.02.2010 13:39:45
Hallo,
du kannst keinen Bereich mit einem anderen Bereich multiplizieren bzw. durch ihn dividieren. D.h. für den 1. Fall musst du die Werte in einer Schleife berechnen. Außerdem muss auf der linken Seite dr Gleichung das Ergebnis stehen und rechts der Term.
for i=1 to 13
rng2(i)=rng1(i)*y(i)/x(i)
next
Gruß
Rudi
Betrifft: AW: föllich ferkehrt
von: Chris
Geschrieben am: 02.02.2010 15:08:51
OK, danke. Werde ich so umsetzen!