Microsoft Excel

Herbers Excel/VBA-Archiv

Zellen gegenseitig aktualisieren


Betrifft: Zellen gegenseitig aktualisieren
von: Philipp
Geschrieben am: 29.11.2018 20:01:14

Hallo zusammen,

ich habe zwei Zellen, H6= Tage und I6 Stunden, diese sollen sich bei Eingabe gegenseitig verändern.

Dazu habe ich folgenden Code, den ich folgendermaßen eingefügt habe:
Rechtsklick auf das Tabellenblatt -> Code anzeigen.


Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Integer
A = "8"
Application.EnableEvents = False
If Target.Address = "H6" Then Range("I6") = Range("H6") * A
If Target.Address = "I6" Then Range("H6") = Range("I6") / A
Application.EnableEvents = True
End Sub


Leider passiert nach der Eingabe in einer der beiden Zellen gar nichts.
Hab es zwischendurch gespeichert, leider keine Veränderung.

Bin dankbar für jede Hilfe.

Danke und viele Grüße, Philipp

  

Betrifft: AW: Zellen gegenseitig aktualisieren
von: ChrisL
Geschrieben am: 29.11.2018 20:05:59

Hi Philipp

Target.Address(0,0) = "H6"
oder
Target.Address = "$H$6"

Sicherstellen, dass Events auch nach einem Fehler eingeschaltet sind d.h. einmalig ausführen oder Fehlerhandling einbauen.
Application.EnableEvents = True

cu
Chris


  

Betrifft: AW: Zellen gegenseitig aktualisieren
von: Philipp
Geschrieben am: 29.11.2018 20:15:04

Danke!

Habe es dann mit Fehlerhandling und für den Rest der Spalte angepasst:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim A, B As Integer

On Error GoTo Fehler
Application.EnableEvents = False
A = "8"

For B = 6 To ActiveSheet.UsedRange.Rows.Count




If Target.Address = "$H$" & B Then Range("I" & B) = Range("H" & B) * A
If Target.Address = "$I$" & B Then Range("H" & B) = Range("I" & B) / A

Next B
Fehler:
Application.EnableEvents = True
End Sub



  

Betrifft: AW: Zellen gegenseitig aktualisieren
von: ChrisL
Geschrieben am: 29.11.2018 20:29:09

Hi

Kann man so machen, aber damit durchläufst du die Schleife immer, egal wo geschrieben wird. z.B.

If Target.Column = 8 Then Cells(Target.Row, 9) = ...
If Target.Column = 9 Then Cells(Target.Row, 8) = ...
cu
Chris


  

Betrifft: AW: Zellen gegenseitig aktualisieren
von: Werner
Geschrieben am: 29.11.2018 20:11:36

Hallo Philipp,

so:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Integer

A = 8

Select Case Target.Address(0, 0)
    Case "H6"
        Application.EnableEvents = False
        Target.Offset(, 1) = Target * A
        Application.EnableEvents = True
    Case "I6"
        Application.EnableEvents = False
        Target.Offset(, -1) = Target / A
    Case Else
        'nix machen
End Select

End Sub
Gruß Werner


  

Betrifft: AW: Zellen gegenseitig aktualisieren
von: ChrisL
Geschrieben am: 29.11.2018 20:13:10

finde den Unterschied ;)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Integer

A = 8

Select Case Target.Address(0, 0)
    Case "H6"
        Application.EnableEvents = False
        Target.Offset(, 1) = Target * A
        Application.EnableEvents = True
    Case "I6"
        Application.EnableEvents = False
        Target.Offset(, -1) = Target / A
        Application.EnableEvents = True
    Case Else
        'nix machen
End Select

End Sub



  

Betrifft: AW: Zellen gegenseitig aktualisieren
von: onur
Geschrieben am: 29.11.2018 20:36:44

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row <> 6 Or (Target.Column <> 8 And Target.Column <> 9) Then Exit Sub
    Application.EnableEvents = False
    Cells(Target.Row, 17 - Target.Column) = Cells(Target.Row, Target.Column) * 8 ^ (17 - Target. _
Column * 2)
    Application.EnableEvents = True
End Sub