Microsoft Excel

Herbers Excel/VBA-Archiv

Value multiplizieren | Herbers Excel-Forum


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.Value 
GreetZ 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

Da hast du recht. Die Reihenfolge ist wichtig, aber bei dir verkehrt!
Vielleicht zeigst du uns mal den ganzen Code, den mir scheint da liegt noch verschiedenes anderes im Argen. Z.B. testet dein If keineswegs, ob die Rng1 mit Daten gefülltist.

GreetZ Renée


  

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!


Beiträge aus den Excel-Beispielen zum Thema "Value multiplizieren"