ID tematu: 38465
|
54. Ukryta przestrzeń nazw |
Autor |
Wiadomość |
Kapol
Excel Expert
Posty: 904
|
Wysłany: 26-10-2013, 09:50 54. Ukryta przestrzeń nazw
|
|
|
Informacje zaczerpnięte z: http://www.cpearson.com/excel/hidden.htm
Ukryta przestrzeń nazw (hidden name space)
Jak wszyscy wiedzą, w Excelu można definiować, edytować i usuwać nazwy za pomocą Menedżera nazw, a także z poziomu VBA. Z pomocą programowania istnieje możliwość ukrywania/odkrywania zdefiniowanych wcześniej nazw w celu ustalenia, czy będą one widoczne w oknie Menedżera nazw.
W Excelu mamy do czynienia z jeszcze jedną przestrzenią nazw, która działa nie na poziomie skoroszytu, ale aplikacji. Przede wszystkim jest to równoznaczne z tym, że długość „życia” takiej nazwy trwa od jej utworzenia aż do zamknięcia instancji Excela. W praktyce oznacza to, że jeżeli otworzymy Zeszyt1.xlsm i stworzymy taką nazwę, a następnie zamkniemy ten skoroszyt i otworzymy nowy - Zeszyt2.xlsm, ta nazwa wciąż będzie znajdowała się w przestrzeni ukrytych nazw i będzie dostępna dla procedur VBA w Zeszyt2.xlsm.
Przejdźmy do sedna – w jaki sposób posługiwać się takimi nazwami? Aby tego dokonać, skorzystamy z metody Application.ExecuteExcel4Macro oraz z funkcji SET.NAME.
Funkcję SET.NAME wykorzystamy w dwóch przypadkach: do utworzenia nowej nazwy oraz do jej usunięcia (a także – pośrednio – do zmodyfikowania jej wartości). Aby utworzyć nową nazwę i umieścić ją w naszej przestrzeni, do funkcji SET.NAME należy przekazać dwa parametry: nazwę definiowanej przez nas nazwy oraz jej wartość.
Kod: | Application.ExecuteExcel4Macro "SET.NAME(""moja_nazwa"",5)" |
W przypadku pierwszego z nich należy pamiętać, aby nie używać niedozwolonych znaków:
Kod: | / - : ; ! @ # $ % ^ & *( ) + = , < > |
W celu usunięcia nazwy wykorzystamy tę samą funkcję, ale przekażemy do niej jedynie pierwszy argument.
Kod: | Application.ExecuteExcel4Macro "SET.NAME(""moja_nazwa"")" |
Aby zmienić wartość nazwy wystarczy ponownie wywołać jej utworzenie, podając nową wartość drugiego parametru. Poniżej krótki kod łączący wszystkie wspomniane wcześniej elementy.
Kod: | Sub TestUkrytychNazw()
With Application
.ExecuteExcel4Macro "SET.NAME(""moja_nazwa"",5)"
Debug.Print .ExecuteExcel4Macro("moja_nazwa")
.ExecuteExcel4Macro "SET.NAME(""moja_nazwa"",4)"
Debug.Print .ExecuteExcel4Macro("moja_nazwa")
.ExecuteExcel4Macro "SET.NAME(""moja_nazwa"")"
Debug.Print .ExecuteExcel4Macro("moja_nazwa")
End With
End Sub |
Nazwa znajdująca się w naszej ukrytej przestrzeni nie zostanie odnaleziona przez VBA w kolekcji Application.Names. Niezbędnym jest więc zapamiętanie jak się ona nazywa, aby nie stracić możliwości odwołania się do niej. |
_________________ BIBLE - Basic Instructions Before Leaving Earth |
|
| ID posta:
208632
|
|
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona uĹźywa plikĂłw cookies.
Kliknij tutaj, Ĺźeby dowiedzieÄ siÄ jaki jest cel uĹźywania cookies oraz jak zmieniÄ ustawienia cookie w przeglďż˝darce.
KorzystajÄ
c ze strony uĹźytkownik wyraĹźa zgodÄ na uĹźywanie plikĂłw cookies, zgodnie z bieĹźÄ
cymi ustawieniami przeglÄ
darki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe
|