Automatisch neu rechnen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm MsgBox
Bild

Betrifft: Automatisch neu rechnen
von: toni
Geschrieben am: 24.11.2003 14:15:05

Hallo VBA'ler,

habe folgendes Problem:
In ein Excelsheet gebe ich Werte ein mit denen dann gerechnet werden soll.
Beispiel:
B7 = 5
C7 = Garage
D7 = 22
...
H7 = Ziegel
I7 = ... (hier soll das Ergebnis der Berechnung aus B7 bis H7 stehen)

B8 = 12
...
usw.

Zur Zeit rechne ich in dem Moment wenn z.B. die Zelle I7 vom Anwender aktiviert wird und keine Zelle in der entsprechenden Zeile leer ist:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Set RaBereich = Range("I7:I26")
    If Not Intersect(Range(Target.Address), RaBereich _
    Is Nothing Then
       Set rng = Range(Target.Offset(0, -1), Target.Offset(0, -6))
        cnt = WorksheetFunction.CountBlank(rng)
        If cnt > 0 Then
          MsgBox "Um den  Neuwert berechnen zu können," & vbCrLf & _
                 "müssen die ersten sieben Felder dieser Zeile gefüllt sein." _
                 , vbInformation, "Info"
                 
        Else
        
        'hier beginnt Rechnung
         Call Rechnen
        'hier endet die Rechnung
     End If
    End If
    Set RaBereich = Nothing
 
Das klappt soweit prima.
Nun kann es aber sein, dass der Anwender später z.B. den Wert aus B7 verändert. In diesem Fall möchte ich erreichen, dass das Ergebnis in I7 automatisch korrigiert wird und nicht erst wenn die Zelle I7 wieder angeklickt wird.
Da ich in der Prozedur 'Rechnen' zur Zeit mit ActiveCell und Offset arbeite, bekomme ich das ganze einfach nicht auf die Reihe...
Muss ich 'Rechnen' ändern oder geht es auch anders?
Hoffentlich kann mir jemand helfen
Sub Rechnen()
Vgebnutz = ActiveCell.Offset(0, -6).Value
Vlaenge = ActiveCell.Offset(0, -5).Value
Vbreite = ActiveCell.Offset(0, -4).Value
Vhoehe = ActiveCell.Offset(0, -3).Value
Vwand = ActiveCell.Offset(0, -2).Value
Vdach = ActiveCell.Offset(0, -1).Value
sumqm = Vlaenge * Vbreite
If Vgebnutz = "Garage" Then
  bas1 = 300
  bas2 = 400
  bas3 = 500
End if
sumqm = Vlaenge * Vbreite
...
...
ActiveCell.Value = sumgesamt
End Sub


Ciao

Toni
Bild


Betrifft: AW: Automatisch neu rechnen
von: Nicolaus
Geschrieben am: 25.11.2003 16:11:45

Hallo,
binde dein Makro in ein Userform ein und hänge deine
Rechenroutine an das Change-Ereignis der einzelnen Felder


Bild

Beiträge aus den Excel-Beispielen zum Thema " Automatisch neu rechnen"