Microsoft Excel

Herbers Excel/VBA-Archiv

KW in Ps umrechnen oder umgekehrt

Betrifft: KW in Ps umrechnen oder umgekehrt
von: Werner
Geschrieben am: 18.04.2003 - 17:43:12

Hallo!
Ich gebe in die Zelle A3 die PS ein oder in die Zelle B3 die KW.
Es soll dann je nach Eingabe in der anderen Zelle der berechnete Wert stehen. Dazu hab ich folgendes Makro gemacht. Leider funktioniert es nicht - es produziert einen Zirkelbezug, da es in beide Zellen (A3 und B3) die Formel einträgt, trotz meiner 2 IF-Bedingungen.

Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$3" And Target.Address <> "$B$3" Then Exit Sub
If Target.Address = "$A$3" Then Call PS
If Target.Address = "$B$3" Then Call KW
End Sub

Sub PS()
Range("B3").FormulaR1C1 = "=RC[-1]/1.36"
End Sub

Sub KW()
Range("A3").FormulaR1C1 = "=RC[+1]*1.36"
End Sub

Kennt jemand eine Lösung für mein Problem.

Besten Dank - Werner


  

Re: KW in Ps umrechnen oder umgekehrt
von: Andreas S
Geschrieben am: 18.04.2003 - 17:49:29

Hallo,

versuch's mal so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Set Zelle = Target
If Target.Address = "$A$3" Or Target.Address = "$B$3" Then
Application.EnableEvents = False
If Zelle.Address = "$A$3" Then
ActiveSheet.Range("B3").FormulaR1C1 = "=RC[-1]/1.36"
End If
If Zelle.Address = "$B$3" Then
ActiveSheet.Range("A3").FormulaR1C1 = "=RC[+1]*1.36"
End If
End If
Application.EnableEvents = True
End Sub


Gruss

Andreas

  

Korrektur
von: Andreas S
Geschrieben am: 18.04.2003 - 17:54:24

Sorry, hab was vergessen. So geht's:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Set Zelle = Target
If Target.Address = "$A$3" Or Target.Address = "$B$3" Then
Application.EnableEvents = False
If Zelle.Address = "$A$3" Then
ActiveSheet.Range("B3").Value = ActiveSheet.Range("A3") / 1.36
End If
If Zelle.Address = "$B$3" Then
ActiveSheet.Range("A3").Value = ActiveSheet.Range("B3") * 1.36
End If
End If
Application.EnableEvents = True
End Sub

  

Re: KW in Ps umrechnen oder umgekehrt
von: Ramses
Geschrieben am: 18.04.2003 - 17:54:47

Hallo Werner,

das kann nicht gehen :-)
Wenn das Change-Ereignis in A3 ausgelöst wird, wird die Formel in B3 eingetragen, das wiederum ein Change-Ereignis auslöst :-))
... und schon geht es rund in Excel.

Du musst EXCEL mitteilen, dass es jetzt aufhören muss.
Setze dazu eine Public Variable die mit Wahr oder Falsch gefüllt wird. Dann wird diese Variable beim Eintritt eines Change-Ereignises geprüft. Wenn Sie WAHR ist, also die Berechnung, oder der Formeleintrag bereits durchgeführt wurde, wird das weitere Makro abgebrochen.



Option Explicit

Public CalcDone As Boolean
Sub Worksheet_Change(ByVal Target As Range)
If CalcDone = True Then
    CalcDone = False
    Exit Sub
End If
If Target.Address <> "$A$3" And Target.Address <> "$B$3" Then Exit Sub
If Target.Address = "$A$3" Then Call PS
If Target.Address = "$B$3" Then Call KW
End Sub

Sub PS()
CalcDone = True
Range("B3").FormulaR1C1 = "=RC[-1]/1.36"
End Sub

Sub KW()
CalcDone = True
Range("A3").FormulaR1C1 = "=RC[+1]*1.36"
End Sub 

     Code eingefügt mit Syntaxhighlighter 1.16

Gruss Rainer


  

Re: KW in Ps umrechnen oder umgekehrt
von: Werner
Geschrieben am: 18.04.2003 - 17:59:03

Dem Andreas recht herzlichen Dank! ! !
Klappt super !
Danke

  

Re: Korrektur
von: Ramses
Geschrieben am: 18.04.2003 - 17:59:42

Hallo Andreas,

EnableEvents ist auch eine elegante Variante:-)

Aber warum der Umweg über

Dim Zelle as Range
Set Zelle = Target

???

Target.Address bringt das gleiche Ergebnis ;-)

Gruss Rainer

  

Re: KW in Ps umrechnen oder umgekehrt
von: @dd
Geschrieben am: 18.04.2003 - 18:00:32

Hi, oder ganz banal in irgend eine Zelle den Bezugswert , zB, in A1 schreibst 1,36 ( einfach als Integer/ Zahlenwert )

und in B2 di Formel : =A2/$A$1 (also A2 geteilt durch den Wert nur aus Zelle A1).
Egal welchen Wert du jetzt in A2 eingibst , der wird in B2 durch den Wert aus Zelle A1, also 1,36 geteilt und angezeigt.

Die formel kannst dann so oft du willst nach unten weiterkopieren, und immer in A.. eingeben , dann wird daneben in B... der Wert entsprechend angezeigt.

easy.

Gruss

  

Re: KW in Ps umrechnen oder umgekehrt
von: andre
Geschrieben am: 18.04.2003 - 19:19:12

hallo werner,
eine alternative wäre noch, bei eintrag nicht die formel zu nehmen, sondern das ergebnis.
gruss andre

  

Re: Korrektur
von: Andreas S
Geschrieben am: 18.04.2003 - 21:10:50

Hallo Ramses,

für diesen Fall hast du voöllig recht, aber ich hatte für das Beispiel eine eigene Anwendung kopiert und "zurechtgestutzt". Und die war einiges aufwendiger.

Gruss
Andreas

 

Beiträge aus den Excel-Beispielen zum Thema "KW in Ps umrechnen oder umgekehrt"