Temat: problem z makrem podczas zamykania pliku

mam problem z makrem podczas zamykania pliku, takie sam kod mam wpisany, gdy plik jest uruchamiany i działa bez problemów .

błąd 1004 występuje w tej linijce: Sheets("Arkusz1").Range("B2").Select

kod :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("arkusz1").Activate

Sheets("Arkusz1").Range("B2").Select
With Selection.Font
.Color = 13434879
End With
Sheets("Arkusz").Visible = False
End Sub

może ktoś ma jakieś rozwiązanie?
Tomasz Gryzio

Tomasz Gryzio Dyrektor
zarządzający/Trener/
Konsultant - It
School

Temat: problem z makrem podczas zamykania pliku

Witam, proponuję linijkę:

Sheets("Arkusz1").Range("B2").Select
zamienić na:
Sheets("arkusz1").Range("B2").Select

, albo linijkę:
Sheets("arkusz1").Activate
zamienić na:
Sheets("Arkusz1").Activate

w zależności jaka jest nazwa arkusza - odpowiednio; arkusz1 czy Arkusz1?

Pozdrawiam!

Temat: problem z makrem podczas zamykania pliku

też to zauważyłam, ale niestety nie pomogło :(

konto usunięte

Temat: problem z makrem podczas zamykania pliku

Przed zakończeniem procedury masz linijkę:
Sheets("Arkusz").Visible = False


Wygląda na 'zjedzoną' jedynkę z nazwy arkusza. Dopisz 1 do nazwy i powinno zadziałać. Chyba, że masz arkusz, który nazywa się 'Arkusz'.

Temat: problem z makrem podczas zamykania pliku

mam taki arkusz :) a wywala się tutaj :

Sheets("Arkusz1").Range("B2").Select

Temat: problem z makrem podczas zamykania pliku

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Sheets("Arkusz1").Range("B2").Font.Color = 13434879
Sheets("Arkusz").Visible = False

End Sub

konto usunięte

Temat: problem z makrem podczas zamykania pliku

@Zbigniew: zoptymalizowałeś kod, usunąłeś niepotrzebne zaznaczanie obiektów. Ładnie, ale działa tak samo, co pierwotny kod :-)

Pytanie, gdzie jest błąd w pierwotnym kodzie?
Tomasz Gryzio

Tomasz Gryzio Dyrektor
zarządzający/Trener/
Konsultant - It
School

Temat: problem z makrem podczas zamykania pliku

Witam ponownie,

Zakładając, że mamy taki kod:

Sheets("Arkusz1").Activate

Sheets("Arkusz1").Range("B2").Select
With Selection.Font
.Color = 13434879
End With
Sheets("Arkusz1").Visible = False


, to jeżeli zostanie on wykonany podczas startu pliku - ukrywając Arkusz1, to nie możemy wykonać operacji select na zakresie z ukrytego arkusza podczas zamykania skoroszytu.

Proponuje zatem zamianę wyżej wymienionego kodu na:

Sheets("Arkusz1").Visible = True

Sheets("Arkusz1").Activate

Sheets("Arkusz1").Range("B2").Select
With Selection.Font
.Color = 13434879
End With
Sheets("Arkusz1").Visible = False


Pozdrawiam!

konto usunięte

Temat: problem z makrem podczas zamykania pliku

Tomasz Gryzio:
, to jeżeli zostanie on wykonany podczas startu pliku - ukrywając Arkusz1, to nie możemy wykonać operacji select na zakresie z ukrytego arkusza podczas zamykania skoroszytu.

Tomasz, ale w pierwotnym kodzie jest ukrywany arkusz o nazwie 'Arkusz', więc tu zaznaczenie w 'Arkusz1' nie spowoduje błędu.

@Marta: oszczędź nam zgadywanek i odkryj karty, pokaż plik, problem jest pewnie prozaiczny :-)

Temat: problem z makrem podczas zamykania pliku

tylko jak plik podesłać?
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: problem z makrem podczas zamykania pliku

Mam dwie uwagi:
1. Należy się upewnić, czy arkusz, którego komórkę chcemy zznaczyć jest w ogóle widoczny.
2. Przed zaznaczeniem konkretnej komórki należy wcześniej koniecznie aktywować arkusz z tą komórką.

konto usunięte

Temat: problem z makrem podczas zamykania pliku

Dodajmy, że żeby ustrzec się przed dodatkowymi czynnościami, czyli sprawdzaniem jaki jest aktywny arkusz, czy to arkusz czy inny typ obiektu, czy jest widoczny, to można stosować dobrą praktykę odwoływania się do obiektów bez konieczności ich zaznaczania. Kod Zbigniewa powinien zadziałać bez żadnego problemu.

@Marta: sprawdzałaś kod Zbigniewa na swoim pliku?

Temat: problem z makrem podczas zamykania pliku

sprawdziłam, ale nadal mi nie działa

mam włączone w makrze, które gdy nie jest spełniony warunek zamyka plik, Application.ScreenUpdating

może mieć to jakiś wpływ?

Gdy wpisałam on error resume next, makro wykonuje to co powinno.

Dziwne :)
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: problem z makrem podczas zamykania pliku

Kod Zbyszka będzie działał, ale instrukcja
Arkusz1.Range("A1").Select
wyrzuci błąd 1004 w sytuacji gdy aktywnym arkuszem jest Arkusz2.

konto usunięte

Temat: problem z makrem podczas zamykania pliku

Mariusz Jankowski:
Kod Zbyszka będzie działał, ale instrukcja
Arkusz1.Range("A1").Select
wyrzuci błąd 1004 w sytuacji gdy aktywnym arkuszem jest Arkusz2.

Mariusz, przecież tam u Zbyszka już nie ma tej instrukcji :-)
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: problem z makrem podczas zamykania pliku

Wiem, to taka uwaga na przyszłość :-).

konto usunięte

Temat: problem z makrem podczas zamykania pliku

Marta Kotwica:
sprawdziłam, ale nadal mi nie działa

mam włączone w makrze, które gdy nie jest spełniony warunek zamyka plik, Application.ScreenUpdating

App.ScreenUpdating przyspiesza działanie kodu, bo nie jest tracony czas na odśnieżanie ekranu.
może mieć to jakiś wpływ?

Gdy wpisałam on error resume next, makro wykonuje to co powinno.

Dziwne :)

On Error Resume Next powoduje, że jak będzie błąd, to kod się nie wywraca, tylko idzie do kolejnej instrukcji, więc dalsze instrukcje są wykonywane.

Temat: problem z makrem podczas zamykania pliku

Marto, proszę podać CAŁY kod jaki jest pod zdarzeniem Close i procedurę zamykającą (wywołującą to zdarzenie), a najlepiej umieścić gdzieś w sieci cały pliczek.
Tak tylko możemy zgadywać.

Z tego fragmentu co został przytoczony nie wynika aby mogło coś być nie tak. Przed zaznaczeniem komórki arkusz jest aktywowany, więc ok. Ochrona arkusza nic nie zmienia, instrukcja select nie powinna zgłosić błędu mimo blokady.Zbigniew Budziewicz edytował(a) ten post dnia 01.04.12 o godzinie 23:33
Mariusz Jankowski

Mariusz Jankowski Programista
Excel/VBA

Temat: problem z makrem podczas zamykania pliku

Dokładnie. Co ciekawe błąd pojawia się przy próbie zaznaczenia komórki, a nie przy aktywacji arkusza, więc możemy wnioskować, że arkusz jest widoczny.
Jean Maury

Jean Maury Menedzer projektu
SAP, Bricoman Polska
Sp. z o.o.

Temat: problem z makrem podczas zamykania pliku

Witam.

Lepiej tak pisac :

if Sheets("Arkusz1").visible=false then
Sheets("Arkusz1").visible = true
else
end if
Sheets("Arkusz1").Range("B2").Select
.......

on error resume next ma konsekwencje ze program, spotkajac blad, idzie dalej.

Jezeli "Arkusz1" nie jest widoczna, Excel bierze wartosc w aktualna komorka i sprawdzenie nie powodla sie.

Pozdrawiam.

Następna dyskusja:

Problem z plikiem z makrem ...




Wyślij zaproszenie do