[VBA] Obsługa worksheet_change

robertm19
Użytkownik
Użytkownik
Posty: 1847
Rejestracja: 8 lip 2008, o 21:16
Płeć: Mężczyzna
Lokalizacja: Staszów/Warszawa
Podziękował: 7 razy
Pomógł: 378 razy

[VBA] Obsługa worksheet_change

Post autor: robertm19 »

Witam
Próbuje rozwiązać poniższy problem.
Poniżej kod, który działa przy modyfikowaniu jednej komórki. Chciałbym aby działa przy modyfikowaniu kilku nara np. przy kopiowaniu lub przeciąganiu komórek.

Kod: Zaznacz cały

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

    If Not Intersect(Target, Range("A1:A10")) Is Nothing Then

        Target.Offset(0, 1).Range("a1") = Target

    End If
If Not Intersect(Target, Range("b1:b10")) Is Nothing Then

        Target.Offset(0, -1).Range("a1") = Target

    End If
Application.EnableEvents = True
End Sub
Ostatnio zmieniony 22 maja 2014, o 22:17 przez Afish, łącznie zmieniany 1 raz.
Powód: Stosuj tagi code.
OShon
Użytkownik
Użytkownik
Posty: 65
Rejestracja: 4 mar 2014, o 00:32
Płeć: Mężczyzna
Lokalizacja: VBATools | Kraków | Poland | Europe | Earth | SolSystem | SomewareInSpace
Podziękował: 1 raz
Pomógł: 7 razy

[VBA] Obsługa worksheet_change

Post autor: OShon »

Tak jest, dlatego ze potraktowałeś Target jako jedna komórka, tymczasem address targetu może być zakresem. W tym przypadku należy wykonać pętlę po tym zakresie i przeciąganie zadziała.

np tak:

Kod: Zaznacz cały

Dim r As Range
    If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
        For Each r In Target
            r.Offset(0, 1).Range("a1") = r
        Next
    End If
Rozwiniesz drugi warunek?
robertm19
Użytkownik
Użytkownik
Posty: 1847
Rejestracja: 8 lip 2008, o 21:16
Płeć: Mężczyzna
Lokalizacja: Staszów/Warszawa
Podziękował: 7 razy
Pomógł: 378 razy

[VBA] Obsługa worksheet_change

Post autor: robertm19 »

Dzięki kolego, już kod poszedł dawno do przodu
ODPOWIEDZ