Keresés

Új hozzászólás Aktív témák

  • Fferi50

    Topikgazda

    válasz Sprite75 #32384 üzenetére

    Szia!

    A Worsheet_SelectionChange eseménykezelőbe az End Sub előtti End With elé írd be
    .Activate
    Ezután használhatod ezt az eseménykezelést:
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range, ujertek As Integer
    Set KeyCells = Range("C4:AY108") ' ez a vizsgálandó terület
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
    ujertek = Target.Value
    Application.EnableEvents = False
    Application.Undo 'visszaállítjuk a változás előtti értéket
    If Target.Value >= 1 And Target.Value <= 300 Then 'ha a régi érték jó
    MsgBox "A(z) " & Target.Address(rowabsolute:=False, columnabsolute:=False) & " cella már tartalmazott egy helyes értéket: " & Target.Value, vbCritical, "Ellenőrzés"
    Else
    If ujertek < 1 Or ujertek > 300 Then 'ha a beírt új érték nem jó
    MsgBox "Ez az érték nem felel meg a követelményeknek: " & ujertek, vbCritical, "Ellenőrzés"
    Else
    Target.Value = ujertek
    End If
    End If
    Application.EnableEvents = True
    End If
    End Sub

    Szépséghibája, hogy nem áll vissza arra a cellára, amelyikbe az értéket írták be, hanem mindig abba az irányba "ugrik", amerre a cellából kiléptek (hiszen többféle módon - pl. enter,tab, nyíl billentyűk - is el lehet hagyni a cellát).

    Üdv.

Új hozzászólás Aktív témák