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

  • Pakliman

    tag

    válasz lenkei83 #36587 üzenetére

    Akkor viszont:

    Dim ws As Worksheet
    Dim rCella As Range

    Set ws = ActiveSheet
    With ws
    For Each rCella In .Range("I2:I" & .Range("A1").SpecialCells(xlCellTypeLastCell).Row)
    rCella = "=sumifs('" & .Cells(rCella.Row, "F") & "'!$C:$C," & "'" & .Cells(rCella.Row, "F") & "'!$B:$B,$D2," & "'" & .Cells(rCella.Row, "F") & "'!$P:$P,$B2)"
    Next rCella
    End With

    Azt ugye tudod, hogy a SpecialCells tud ám rafinált hibákat okozni?
    Csak látszat, hogy az utolsó "használt" cella lesz az alapja a visszaadott koordinátának.
    Ha az utolsó mentés (és/vagy újranyitás) előtt mondjuk a "XFD1048576" cellába (O2010-nél az utolsó cella) valaki írt valamit aztán TÖRÖLTE, akkor a SpecialCells(xlCellTypeLastCell) az a cella lesz!!

    Én ezeket használom az utolsó sor/oszlop meghatározására (a "hol" lehet egy munkalap, vagy akár egy terület is):

    Public Function UtolsóSora(hol, Optional lColumn As Long = 1) As Long
    Dim rng

    Set rng = hol.Cells(hol.Cells.Rows.Count, lColumn)

    If Not IsEmpty(rng) Then
    UtolsóSora = rng.Row
    Else
    UtolsóSora = rng.End(xlUp).Row
    End If

    Set rng = Nothing

    End Function

    Public Function UtolsóOszlopa(hol, Optional lRow As Long = 1) As Long
    Dim rng

    Set rng = hol.Cells(lRow, hol.Cells.Columns.Count)

    If Not IsEmpty(rng) Then
    UtolsóOszlopa = rng.Row
    Else
    UtolsóOszlopa = rng.End(xlToLeft).Column
    End If

    Set rng = Nothing

    End Function

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