Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 4
  • 560

Hej.

Chciałbym stworzyć makro aktywowane skrótem (Ctrl+Q), zapisane w moim pliku z makrami personalnymi (PERSONAL.XLSB), które pozwoliłoby mi się przełączać pomiędzy ostatnio aktywowanym arkuszem w danym pliku oraz w przypadku, gdy mam wiele otwartych plików. Coś w rodzaju Alt+Tab. Znalazłem taki kod:

'in ThisWorkbook
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Set LstSht = Sh
End Sub

'in Standard Module
Public LstSht As Worksheet

'CTRL+q
Sub GoToLast()
LstSht.Activate
End Sub

Lecz działa on tylko w konkretnym pliku. Czy istnieje możliwość napisania czegoś takiego za pomocą makra, bez względu na to, jaki plik otwieram? Przyspieszyłoby to znacznie moją pracę z Excelem. :D

Pozdrawiam.
Marek.

MarekC
  • Zapytał
  • @ MarekC | 26.05.2015
    • 2
    • 0
    • 1
Komentarze (1)
Myślę głośno: Może jakoś drugą część makra zapisać do domyślnego szablonu? Może zmienną Sh zapisywać do zewnętrznego pliku tekstowego. Używam tego makra i też jestem ciekaw odpowiedzi.
Skomentował : @ Jacek_Kotowski ,12.06.2015
  • 60
  • 54
  • 94

Odpowiedź (1)

  • 0

Witam.

Makro ma działać zawsze, więc cały kod umieścimy w PERSONAL.XLSB (skoroszycie makr osobistych).

Najpierw dodajemy moduł klasy i nazywamy go np. klasaApk.

Wewnątrz wpisujemy:

Option Explicit

Public WithEvents ApkEvent As Application

Private Sub ApkEvent_SheetDeactivate(ByVal Sh As Object)

Set OstatniArkusz = Sh

End Sub

Następnie dodajemy moduł:

Option Explicit

Public OstatniArkusz As Worksheet

Dim ApkObject As New klasaApk

Sub Inicjuj()

    Set ApkObject.ApkEvent = Application

End Sub

Sub AktywujOstatni()

    OstatniArkusz.Activate

End Sub

Procedurze "AktywujOstatni()" w Excelu przypisujemy skrót np.: "Ctrl+Shift+Q".


 


Aby klasa działała, trzeba ją zainicjować. Odpowiada za to procedura "Inicjuj()", którą uruchomimy za pomocą procedury zdarzeniowej "Workbook_Open()" skoroszytu PERSONAL.XLSB.

Private Sub Workbook_Open()

    Call Inicjuj

End Sub

Wszystko umieszczamy w PERSONAL.XLSB.





Pozdrawiam.
Paweł Niemyt.

pawel_niemyt
  • Odpowiedział
  • @ pawel_niemyt | 27.07.2015