Ten kawałek tworzy funkcje i określa jej parametry wejściowe, lecz w tej formie raczej się nie zda.Function Probe(ByVal X As Integer, ByVal Y as Integer) As Double
Function Probe(ByVal X As Integer, ByVal Y as Integer) As Double
komenenda Function tworzy funkcję po niej podajemy nazwę funkcji nasze Probe i jeśli funkcja Probe przyjmuje jakieś zmienne deklarujemy je w nawiasie jeśli nie zostawiamy pusty nawias ( Function Probe() )
w Twoim przykładzie zainicjowałeś tylko dwie zmienne i to ostatnie As Double jakby zbędnne..
Pozatym widzę że przekazujesz funkcji zmienne dla wartości x y i jako typ danych wskazujesz na Integer co mi średnio pasuje z racji narury tego typu znaków. W dużym skrócie to typy danych wyglądają następująco (ich część (to nie poradnik

kilka typów zmiennych, ich nazwa i zakres:
liczby zmiennoprzecinkowe np -123.765, 999.999
Single = –3.402823538 do 3.402823538
Double = –1.79769313486231570308 do 1.79769313486231570308
liczby całkowite: -1, -4, 8, 100, 1000
Long = –9,223,372,036,854,775,808 do 9,223,372,036,854,775,807
Integer = –2,147,483,648 do 2,147,483,647
String = łańcuch znaków np "www.cnc.info.pl"
char = przechowuje pojedyńczy znak np : 'a'
byte = 0..255 jeden bajt pamięci
Boolean = True, False (logiczne zero lub jedynka logiczna 0, 1)
Deklarując zmienne typu integer dla osi XY w funkcji Probe ograniczasz dokładność danych do 1 co nie jest raczej pożądane.
lepiej zastosować single albo double.
Choć wydawać się może, że ten kod nie działa, tak naprawdę jest jak najbardziej poprawny i działa.Dim ZPos as Double ' Nic nie daje
Dim to deklaracja zmiennej
ZPos nazwa zmiennej
as przypisanie typu zmiennej
double typ zmiennej
tutaj do zmiennej zpos została wprowadzona wartość pozycji osi ZZPos = GetOEMDRO (802) 'Get Z
w ten sposób nie wyświetlisz wartości ZPosReturn ZPos <- SYNTAX ERROR zaznacza mi zmienną
End Function
możesz wykorzystać komendę MsgBox i jako jej jedyny argument podać jakiś text w cudzysłowiu, lub zmienną bez cudzysłowia np
MsgBox "hello world"
MsgBox "Pozycja Z: " & ZPos & "mm"
a to że jakaś komenda lub funkcja zwraca coś to wyglądać mże to np:
Kod: Zaznacz cały
Public Sub MsgPrint (ByVal sMsg As String, ByVal iType As Integer, ByVal sTitle As String)
iMsgBack = MsgBox(sMsg, iType, sTitle)
End Sub
Dodane 56 minuty 40 sekundy:
To as double na początku wygląda jak deklaracja wartosci zwracanej przez funkcje. Przez co mogłem namieszać trochę. Sprawdzę to później.