, aby użyć przycisku Obrót (kontrolka ActiveX), aby wyświetlić poprzedni lub następny arkusz. Po kliknięciu przycisku zdarzenie zostaje pomyślnie uruchomione, a żądany arkusz jest aktywowany, ale zawiera niektóre elementy (polecenia, wykresy itp.) Z oryginalnego arkusza i pokazuje je jako dołączane zdjęcie.Uruchom inny arkusz za pomocą przycisku Spin
Przykładowy kod przypadku przycisku w dół:
Private Sub SpinButton_JumpToWeek_SpinDown()
Dim sh_num As String
Dim tmp_num As Integer
Application.ScreenUpdating = False
Application.EnableEvents = False
SpinButton_JumpToWeek.Value = Range("B27").Value - 1
tmp_num = SpinButton_JumpToWeek.Value
' Activate desired KTx sheet
sh_num = "KT" & tmp_num
Range("F27").Value = "" 'reset to blank
Sheets(sh_num).Activate
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
obejście działanie trzeba ręcznie wyboru (aktywacja) innego arkusza, a następnie ponownie wybrać żądany arkusz. Próbowałem również zautomatyzować to obejście makrem, ale niestety to nie działa.
To ciekawe, że ten problem nie występuje, jeśli wykonuję kod w trybie debugowania (przy użyciu punktu przerwania i linii krokowej po linii).
Co zaskakujące, nie mam takiego problemu, jeśli próbuję wyświetlić poprzedni/następny arkusz, pisząc wartość (indeks nazwy arkusza) do zdefiniowanej komórki (to znaczy za pomocą zdarzenia Worksheet_Change). Żądana strona jest poprawnie wyświetlana. Zobacz zdjęcia.
Przykładowy kod dla tej evententer opis obrazu tutaj:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sh_num As String
Application.ScreenUpdating = False
Application.EnableEvents = False
If Range("F27").Value > 0 Then
' Activate desired KTx sheet
sh_num = "KT" & Range("F27").Value
Range("F27").Value = "" 'reset to blank
Sheets(sh_num).Activate
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
muszę użyć przycisku Spin, ponieważ jest to szybsze i pozwala mi pominąć niektóre arkusze (na przykład, jeśli te nie mieć dane). Problem występuje w programie Excel w wersji 32- i 64-bitowej.
Czy ktoś ma pomysł, dlaczego ten problem występuje i obejście problemu? Czy muszę zmienić niektóre ustawienia lub właściwości systemu w programie Excel? Każda pomoc będzie bardzo ceniona.
@mehow Dołączam tutaj mój commenst ze względu na dużą liczbę słów.
- Poszedłem za twoją sugestią i wypróbowałem przykład UserForm z wstawioną aktywną kontrolką "Arkusz kalkulacyjny Microsoft Office". Dowiedziałem się, że nie byłoby to dobre rozwiązanie dla mojej sprawy, ponieważ odpowiedź takiego arkusza jest stosunkowo powolna (nawet na szybkim komputerze, takim jak mój), gdy użytkownik wstawia wartości do komórek. Ponadto bardzo skomplikowałoby to mój dość prosty skoroszyt * * .xlsm, który ma więcej niż 50 arkuszy (1 arkusz na każdy tydzień, zawartość tych arkuszy jest następnie połączona z głównym arkuszem) i całkowicie spełnia moje podstawowe potrzeby (z oczywiście z wyjątkiem tego przycisku spin).
Moim zdaniem prawdopodobnie zachodzi potrzeba manipulowania jakimś rodzajem własności systemowej (jak na przykład sztuczka Application.ScreenUpdating), ale nie mam wystarczającej wiedzy VBA, aby ją znaleźć.
- Aby jednoznacznie wyjaśnić moje pytanie, musiałbym udostępnić mój przykładowy skoroszyt, ale nie wiem, jak go załadować na to forum. Niestety nie jestem w stanie przesyłać/wyświetlać obrazów z powodzeniem na tym forum (ze względu na moją niską ocenę), co również bardzo pomogłoby.
BTW, nie widzę zdjęć w innych pytaniach na tym forum. . Czy ten problem może wystąpić z powodu braku wtyczek w przeglądarce?
Czy można uznać za pomocą UserForm i wyświetlanie części arkusze na nim? Aby uzyskać pomysł, zobacz [to] (http://stackoverflow.com/questions/17406319/display-a-part-of-an-excel-sheet-on-a-userform-using-vba/17407415#17407415) –
Co masz na myśli mówiąc "niestety to nie działa?" - w jakiej linii zawodzi? – enderland
@mehow napisałem kod VBA, który emuluje moje "ręczne" obejście, ale jego odpowiedź niestety nie była skuteczna – mcerna2