Wpis z mikrobloga

Mireczki spece od #excel, mam dużą ilość danych do wprowadzenia (arkusz z wynikami badań, zawsze te same komórki w każdym z arkuszy). Stworzyłem sobie takie makro:

Sub inpdatai()
'
' inpdatai Makro
'
' Klawisz skrótu: Ctrl+i
'
ActiveSheet.Range("M19, M22, M25, M28, M31, L19, L22, L25, L28, L31, L18, L21, L24, L27, L30, J19, J22, J25, J28, J31, B26:B28, G27, G26, D27, B29, G30, G29, D30, B18, G19, G18, D19, B21, G22, G21, D22").Select

End Sub

po każdym enterze przechodzi mi do kolejnej komórki i jest okej, ale zastanawiam się czy da się to jakoś przekształcić żeby po komórce D22 makro kończyło swoje działanie i nie przechodziło od początku do M19?

#kiciochpyta
  • 11
@Ag3SbS3:

czy da się to jakoś przekształcić żeby po komórce D22 makro kończyło swoje działanie i nie przechodziło od początku do M19


To makro nie robi nic więcej poza zaznaczeniem X komórek, więc pytanie jest co najmniej niejasne.
@Ag3SbS3: tzn taki efekt chcesz mieć?

Sub inpdatai()

ActiveSheet.Range("M19, M22, M25, M28, M31, L19, L22, L25, L28, L31, L18, L21, L24, L27, L30, J19, J22, J25, J28, J31, B26:B28, G27, G26, D27, B29, G30, G29, D30, B18, G19, G18, D19, B21, G22, G21, D22").Select

Range("d22").Activate

End Sub
@nadszyszkownik_kilkujadek: @5QR_: Nie, kolejność komórek nie jest przypadkowa w tej kolejności chce wpisywać dane. Np. uzupełnię M19 naciskam Enter i przechodzi mi do M22. Uzupełnię M22, naciskam Enter i przechodzi do M25 itd.
Rzeczywiście nie robi to nic poza zaznaczaniem, ale to jedyne co wymyśliłem żebym mógł szybko przechodzić do interesujących mnie komórek (koniecznie w tej kolejności) i je uzupełniać bez korzystania z myszki. Z makrami nie miałem nigdy wcześniej
@Ag3SbS3: jeśli zmieniasz zawartość D22 to możesz w module zmienianego arkusza umieścić kod:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$22" Then
Range("d22").Select
End If
End Sub
@Ag3SbS3: Tak na szybko, moja propozycja (można to w jakąś pętlę wrzucić, ale po co):

Sub Makro1()
'
' Makro1 Makro
'

ActiveSheet.Range("M19").Value = InputBox("M19", "M19")
ActiveSheet.Range("M22").Value = InputBox("M22", "M22")
'.
'.Tu wpisz resztę komórek - zasadę znasz
'.
ActiveSheet.Range("D22").Value = InputBox("D22", "D22")

'
End Sub