Wiem, że to brzmi prosto, ale na pozór tak nie jest.Jak przekazać zakres do Sub w VBA Word?
Jeśli piszę to w VBA Worda, zawsze jest napisane "niekompatybilne typy" - dlaczego? A jak mogę to sprawić?
Wiem, że to brzmi prosto, ale na pozór tak nie jest.Jak przekazać zakres do Sub w VBA Word?
Jeśli piszę to w VBA Worda, zawsze jest napisane "niekompatybilne typy" - dlaczego? A jak mogę to sprawić?
Zakres procesu to sub
, więc nie należy go wywoływać w nawiasach. (Błąd występuje, ponieważ (r)
powoduje r
zostać ocenione która zwraca jego wartość domyślna właściwość, która nie jest typu range
tak niedopasowania jakich ProcessRange
oczekuje
Zastosowanie albo;.
ProcessRange r
lub
call ProcessRange(r)
Nie można wywoływać Sub
za pomocą nawiasu, chyba że używa się instrukcji Call
.
Stąd trzeba użyć albo:
Call ProcessRange(r)
Lub:
ProcessRange r
Powodem tego jest to, że w VBA (i VBS, VB6, zbyt) nawias może mieć dużo różnych znaczeń.
W twoim przypadku obiekt zakresu będzie oceniony przed przekazaniem wyniku do ProcessRange
. W takim przypadku prowadzi do przekazania do sub-suba string
, ponieważ domyślna właściwość Range
to .
znaleźć w tym artykule przegląd: http://blogs.msdn.com/ericlippert/archive/2003/09/15/52996.aspx
Korzystanie nawiasie Visual Basic zakłada jesteś wywołanie funkcji.
ProcessRange r
załatwia sprawę