2k Aufrufe
Gefragt in Tabellenkalkulation von sirtobi Mitglied (179 Punkte)
Die Überschrift hört sich jetzt etwas dumm an, aber ich habe folgendes Problem.

Nehmen wir an in Zelle A1 ist die Temperatur in Grad Celsius und in Zelle B1 in Kelvin.
Wenn ich jetzt einen der Werte ändere, sollte sich der andere anpassen.
Dies ist jetzt ein Beispiel. Mein Problem ist etwas größer, aber wenn ich des schaff,
dann bekomme ich das andere auch hin. :)

Ich kann mir vorstellen, dass man irgendwas mit VBA Scripts machen muss. Aber ich
kenne mich in diesen Bereich leider gar nicht aus. wäre schön wenn mir jmd helfen
könnte.

10 Antworten

0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Kurz - nur VBA kann das Leisten da Zellen entweder Formeln oder Eingaben enthalten.

Willst du diese Lösung haben?

Eric March
0 Punkte
Beantwortet von sirtobi Mitglied (179 Punkte)
Ja wenn es nicht zu viel arbeit ist..
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Private Sub Worksheet_Change(ByVal Target As Range)
'Baukastendenken…
Dim Spalte As Integer
Dim Zeile As Integer
Application.EnableEvents = False
If Zeile = 1 Then 'a-Eins und b-Eins
If Spalte = 1 Then 'A-eins
Cells(Zeile, Spalte + 1) = Cells(Zeile, Spalte) - 273
End If
If Spalte = 2 Then 'B-eins
Cells(Zeile, Spalte - 1) = Cells(Zeile, Spalte) + 273
End If
End If
Application.EnableEvents = True
End Sub

Dieser Code muss ins Codefenster des Tabellenblattes in dem das passieren soll (nicht in ‹Dies Arbeitsmappe>, nicht in eine Modul).
Auf Prüfungen für Plausbilität habe ich verzichtet, und auch die Komma-15 eingespart. Das kann dann alles ergänzt werden.

Eric March
0 Punkte
Beantwortet von sirtobi Mitglied (179 Punkte)
Hast du das ausprobiert? Bei mir funktioniert es nämlich nicht.

Ich kenne mich in VBA zwar nicht aus, aber zuerst Spalte und Zeile
deklariert und dann später bei der Bedingung sollen sie einen Wert
haben.
Den wird doch gar kein Wert zugewiesen. Oder?
0 Punkte
Beantwortet von sirtobi Mitglied (179 Punkte)
Ok ich hab es hinbekommen:

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False

If Target.Address = "$A$1" Then
Cells(2, 1) = Cells(1, 1) + 273
End If
If Target.Address = "$A$2" Then
Cells(1, 1) = Cells(2, 1) - 273
End If

Application.EnableEvents = True
End Sub
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Private Sub Worksheet_Change(ByVal Target As Range)
'Baukastendenken…
Dim Spalte As Integer
Dim Zeile As Integer
Spalte = Target.Column
Zeile = Target.Row
Application.EnableEvents = False
If Zeile = 1 Then 'a-Eins und b-Eins
If Spalte = 1 Then 'A-eins
Cells(Zeile, Spalte + 1) = Cells(Zeile, Spalte) - 273
End If
If Spalte = 2 Then 'B-eins
Cells(Zeile, Spalte - 1) = Cells(Zeile, Spalte) + 273
End If
End If
Application.EnableEvents = True
End Sub

…und das war was ich in der Eile vergessen hatte.

Persönlich bin ich gegen Address und Angaben wie "A1" allergisch da sie sich nicht zählen lassen.

Unsere Antworten haben sich nur leider zeitlich etwas überschnitten, was wunder wenn man nebenher arbeitet.

Eric March
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
…och nööö!
Ich wollte eigntlich…
palte = Target.Column
Zeile = Target.Row

…fett hervorgehoben haben.
E.M.
0 Punkte
Beantwortet von sirtobi Mitglied (179 Punkte)
bei deinem Code haben die Zeilen
Spalte = Target.Column
Zeile = Target.Row

gefehlt..
0 Punkte
Beantwortet von ericmarch Experte (4.6k Punkte)
Hab ich ja geschrieben, ›Baukastendenken‹. Nur leider in paar kleine Bausteinchen verbaselt ;-)
Es gibt nichts schlimmeres als Routine.

Eric March
0 Punkte
Beantwortet von sirtobi Mitglied (179 Punkte)
ja gut danke jetzt kann ich es auf zwei verschiedene Arten, obwohl ich
bis vor gestern noch gar kein bisschen VBA konnte
Also vielen Dank :)
...