Keresés

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

  • Delila_1

    veterán

    válasz MCGaiwer #29065 üzenetére

    A "B" lap A2 cellájának a képlete =HA(A!A2="";"";A!A2). Azért nem simán =A!A2, hogy ne rajzolja tele a lapot nullákkal üres A!cella esetén. A képletet másold jobbra és le, ameddig kell.

    Az "A" lapon 1 gomb van a vezérlők eszköztárából, ami nálam Elozo névre hallgat. Ehhez a laphoz 2 makrót rendelj. Mindkettő csak a saját lapján dolgozik, mert a "B" lapon a képletek adják a mindenkori "A" lap értékekeit. Az első eseményvezérelt,

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim oszlop As Integer, uoszlop As Integer
    Application.EnableEvents = False

    If Target.Row = 1 Then Exit Sub

    If Cells(Target.Row, Target.Column + 20) = "" Then
    uoszlop = Cells(Target.Row, 20).End(xlToLeft).Column

    Range(Cells(Target.Row, 1), Cells(Target.Row, uoszlop)).Copy
    Range("U" & Target.Row).PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    Cells(Target.Row, 1) = Date
    Range(Target.Address).Activate
    End If
    Application.EnableEvents = True
    End Sub

    Ez a makró másolatot készít az aktuális sor adatairól, az U oszloptól kezdődően. Ha sok oszlopod van, teheted hátrább is. Az aktuális dátumot beírja az A oszlopba.

    A második makró a gombhoz rendelt.

    Private Sub Elozo_Click()
    Dim sor As Long, oszlop As Integer, uoszlop As Integer
    sor = Selection.Row: oszlop = Selection.Column

    uoszlop = Cells(sor, Columns.Count).End(xlToLeft).Column
    Application.EnableEvents = False

    Range(Cells(sor, "V"), Cells(sor, uoszlop)).Copy
    Range("B" & sor).PasteSpecial xlPasteValues
    Range("A" & sor) = Date
    Cells(sor, oszlop).Activate
    Application.CutCopyMode = False

    Application.EnableEvents = True
    End Sub

    Működése: állj a sorra, ahol vissza akarod csalni az előző adatokat, majd klikkelj a gombra. A V oszloptól kezdve az első makró által beírt utolsó adatig másol a B oszlopba, az A-ba beírja az aktuális dátumot.

    Ha a régi dátumot is vissza akarod állítani, akkor a másolás az U-tól kezdődjön, a célcella pedig range("A" & sor) legyen. Ekkor nem kell a range("A" & sor)=date sor.

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

Hirdetés