Stránka 1 z 1

Excel - zkopírování makra dokonrétní buňky

Napsal: 21 bře 2014 21:16
od bloom
Ahoj,
mám takový problém - zaseknul jsem se na tvorbě makra, které by mělo po změně hodnot v určitých buňkách hodnoty v těchto buňkách zkopírovat na nový list do konkrétních buněk. Není problém hodnoty zkopírovat na nový list, ovšem vždy, když do kódu zadám konkrétní buňky na novém listu, ozve se chybová hláška a makro nefunguje.
Makro (kopírující hodnoty na nový list, ale ne do konkrétní buňky) funguje podle kódu:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("B10:K10")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Range("B10:K10").Select
Selection.Copy
Sheets("List3").Paste
Application.CutCopyMode = False

End If
End Sub

Při specifikaci konkrétní buňky podle následujícího kódu se vždy objeví chybová hláška:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("B10:K10")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Range("B10:K10").Select
Selection.Copy
Sheets("List3").Select
Range("B10:K10").Select
Selection.Paste
Application.CutCopyMode = False

End If
End Sub

V příloze posílám ukázkový soubor s kódem tak, jak mi pracuje.
Poraďte mi, prosím, v čem dělám chybu. Mnohokrát děkuji za odpověď. bloom

Re: Excel - zkopírování makra dokonrétní buňky

Napsal: 22 bře 2014 07:45
od Azuzula
Ahoj, vítám Tě na PC Help.
Je to tím, že makro v listu operuje s listem ve kterém se nachází, tím pádem musíš použít i název listu kam má to makro zasahovat v Tvém případě:
Worksheets("List3").Range("B10:K10").Select

Každopádně je rychlejší (pro běh makra) vložit oblast buněk které chceš kopírovat do proměnné a vložit data do listu bez mezikopírování ;)

Kód: Vybrat vše

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("B10:K10")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
    Worksheets("List3").Range("B10:K10") = KeyCells.Value '.Value můžeš nahradit .formulalocal pro vkládání vzorců místo pevných dat
End If
End Sub

Re: Excel - zkopírování makra dokonrétní buňky

Napsal: 23 bře 2014 11:00
od bloom
Díky moc. :)