Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel 2003 - Makro na určenie vzťahu medzi susednými bunkami (rozdiel hodnôt)

Pri spracovaní zmeny nejakého rozsahu sa často zabúda na to, že sa môže meniť viacero buniek naraz, t.j. rozsah Target neobsahuje len jednu bunku. Riešení môže byť viacero. Môže sa napríklad spracovať každá bunka rozsahu pomocou cyklu For Each, čo však môže robiť problém pri zmene veľkého rozsahu buniek. Alebo sa môže spracovať len jedna bunka (ľavá horná) celého rozsahu, čo môže občas vadiť.

Keby si chcel spracovávať zmenu v každej bunke, môžeš to napísať nejako takto:

For Each cell in Target.Cells
    ... (tu už pracuješ s premennou cell)
Next cell

Ak by si chcel spracovávať len prvú bunku, tak by to mohlo vyzerať takto:
Set cell = Target.Resize(1, 1)
... (tu už pracuješ s premennou cell)

Zistiť, či bolo zmenených viacero buniek naraz, je jednoduché:
If Target.Cells.Count > 1 Then

Tvoj program by som prepísal asi do takéhoto tvaru:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo ErrorHandler
    Application.EnableEvents = False

    Set intersection = Intersect(Target.Cells, Range("O:P"))

    If Not intersection Is Nothing Then
        For Each cell In intersection
            If cell.Column = 15 Then cell.Offset(0, 1) = cell.Offset(-1, 0) - cell.Value
            If cell.Column = 16 Then cell.Offset(0, -1) = cell.Offset(-1, -1) - cell.Value
        Next
    End If

ErrorHandler:
    Application.EnableEvents = True
End Sub

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny