Błąd wykonania 1004

Błąd wykonania 1004

Błąd ten pojawia się w sytuacji, gdy wprawdzie kod jest prawidłowy, ale dane będące argumentami np.funkcji arkuszowych odwołują się do błędnych danych w arkuszu.
Dla przykładowego kodu może to wyglądać tak:

Public Sub MojaFunkcja()
Wynik = WorksheetFunction.VLookup(“lipiece”, Worksheets(“Arkusz4”).Range(“A1:B13”), 2, False)
End Sub

Podczas wykonania tego fragmentu kodu pojawił się błąd jw., gdyż w tabeli nie ma komórki  z wartością “lipiece”. Tu w celi eliminacji błędu można zmienić ostatni argument funkcji VLookup na True (choć tu trzeba uważać). Gorzej jeżeli np.w funkcji pojawi się np.za duża liczba kolumn (większa od ilości kolumn tabeli) – tu zdecydowanie trzeba skorygować kod.
Generalnie każdy przypadek wystąpienia takiego błędu trzeba dokładnie przeanalizować. No i włączyć obsługę błędów, która zabezpieczy kod przed różnymi niespodziankami.

 

Funkcje arkuszowe VBA

Funkcje arkuszowe VBA to funkcje Excela, dostępne w ramach obiektu VBA Worksheet.Function. Działają tak samo, jak bezpośrednio w arkuszu.

Właściwie WorksheetFunction jest częścią obiektu Application, ale jak wiele innych może być stosowany samodzielnie.
Czyli można stosować w kodzie zarówno:
Application.WorksheetFunction….
jak i
WorksheetFunction…

Nazwy funkcji w ramach obiektu są w języku angielskim.


Kurs Makra i VBA w Excelu dla początkujących

 

Funkcja VBA And

Funkcja And w VBA to jedna z funkcji logicznych VBA. Właściwie to spełnia rolę operatora w iloczynie logicznym.
Wszystkie warunki będące czynnikami takiego iloczynu muszą być typu Boolean (czyli True dla prawdy i False dla fałszu). W wyniku działania otrzymujemy również wartość typu Boolean.

Public Sub Przyklad()
Dim CzyPrawda As Boolean
Dim Warunek1 As Boolean
Dim
Warunek1 As Boolean
Dim Warunek1 As Boolean

CzyPrawda = Warunek1 And Warunek2 And Warunek3
End Sub

W wyniku działania otrzymujemy wartość True tylko wtedy, gdy każdy z warunków jest spełniony czyli ma wartość True.  W każdym innym przypadku otrzymamy False.

Odpowiednikiem funkcji w Excelu jest funkcja Oraz()


Kurs Makra i VBA w Excelu dla początkujących

 

Przenoszenie pliku

Jak szybko przenieść czyli usunąć w jednym miejscu i przenieść w inne miejsce na dysku) plik? Jednym ze  sposobów  jest wykorzystanie obiektu FileSystem.Object.
Służy do tego metoda FileSystem.Object.MoveFile
Ma ona kilka parametrów wejściowych:

    • Object – nazwa obiektu zdefiniowanego jako obiekt FSO. Argument obowiązkowy.
    • Source – nazwa pliku do skopiowania. Argument obowiązkowy, ale dozwolone są znaki zastępcze w nazwie.
    • Destination – nazwa pliku po przeniesieniu. Argument obowiązkowy.

Zarówno stara jak i nowa nazwa pliku musi być pełna czyli z z dokładnym podaniem dysku i katalogu.

Przykładowy kod  może wyglądać tak:

Public Sub PrzeniesPlik()
Dim FSO As Object
Dim StaryPlik As String
Dim
NowyPlik As String
StaryPlik = “C:\Folder1\plik.png”
NowyPlik = “C:\Folder2\plik.png”
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.MoveFile StaryPlik, NowyPlik
Set FSO = Nothing
End Sub

Warto też  wcześniej zwrócić uwagę na sprawdzenie, czy plik do przeniesienia istnieje. Jeżeli nie, to w trakcie wykonywania procedury wystąpi błąd wykonania 53.


Kurs Excel - makra i VBA dla początkujących

 

Funkcja WeekDay

Funkcja WeekDay to jedna z funkcji Daty i Czasu VBA. Zwraca wartość liczbową (od 1 do 7) odpowiadającą numerowi dnia tygodnia.

Argumenty funkcji to:

    • Date– wartość daty (argument obowiązkowy)
    • FirstDayofWeek -pierwszy dzień tygodnia:
      • vbUseSystem lub 0zgodne z ustawieniami systemu komputera
      • vbSunday lub 1 dla ustawień niedziela=1 do sobota=7
              wartość domyślna
      • vbMonday lub 2 dla ustawień poniedziałek=1 do niedziela=7
      • vbTuesday lub 3 dla ustawień wtorek =1 do poniedziałek=7
      • vbWednesday lub 4 dla ustawień środa=1 do wtorek=7
      • vbThursday lub 5 dla ustawień czwartek =1 do środa=7
      • vbFriday lub 6 dla ustawień piątek =1 do czwartek=7
      • vbSaturday lub 7 dla ustawień sobota =1 do piątek=7

Wynikiem działania funkcji jest liczba całkowita 1 do 7 – w zależności od przyjętego argumentu wejściowego.

Odpowiednikiem funkcji w Excelu jest funkcja Dzien.Tyg()


Kurs Makra i VBA w Excelu dla początkujących