Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Anfängerfrage: Feld als Ergebnis oder Basiswert verwenden
#1
Hallo,

wenn ich eine Berechnung der Form a = b/c machen möchte habe ich 3 Felder: a als Ergebnis, b und c für die Basiswerte.
Ist es möglich auch Werte in a einzugeben welche automatisch zur Berechnung von b oder c verwendet werden, vorausgesetzt b oder c sind gegeben?
D.h. gleichzeitig alle 3 Felder zur Berechnung der jeweilig anderen verwenden? Bis jetzt sehe ich nur die Möglichkeit ein Feld entweder für die Ergebnisse oder für Basiswerte zu verwenden.
Möchte aber a auch manchmal für Basiswerte und manchmal fürs Ergebnis verwenden.

Vorschläge sind willkommen.
Antworten Top
#2
Hallo

ja, das geht. Aber nur mit VBA.


Aber: Bei  A1=B1 / C1 gibt es bei Änderung von A1 keine eindeutige Lösung

Beispiel: A1 Eingabe =0,5
dann muss der Zähler halb so groß sein wie der Nenner, also zB. 2 / 4 aber auch 8/16 oder...
Es gibt also unendlich viele Lösungen.

Da muss dann zusätzlich festgelegt werden, ob B1 oder C1 dann als Fixwert genommen werden soll


- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- Das dort reinkopieren

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Const APPNAME = "Worksheet_Change"
    If Target.Count > 1 Then
        MsgBox "Bitte nur einzeln ändern"
        Application.EnableEvents = False
        Application.Undo

    Else
        If Not Intersect(Target, Union([A1], [B1], [C1])) Is Nothing Then
            If [C1] = 0 Then
                MsgBox "Division durch 0"
                Application.EnableEvents = False
                Application.Undo

            Else
                Application.EnableEvents = False
                Select Case Target.Column
               
                    Case 1
                        [B1] = Target * [C1] 'C1 wird als Fix angenommen
                       
                    Case 2
                        [A1] = Target / [C1]
                   
                    Case 3
                        If Target = 0 Then
                            MsgBox "Division durch 0"
                        Else
                            [A1] = [B1] / Target
                        End If
                End Select
            End If
   
        End If
    End If
    '*** Fehlerbehandlung
    Err.Clear
Fehler:
    Application.EnableEvents = True
    If Err.Number <> 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
        & "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub



LG UweD
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste