VBA Excel - 将工作表和范围作为参数传递

时间:2016-04-03 06:56:19

标签: excel vba

任何人都可以帮助我将Sub转换为函数,以便将其用于不同的表单控件吗?我是VBA擅长的新手,而且我一直试图将这个转换成几个小时而没有运气。如果有人可以提供帮助,请欣赏它。

GetChildCenter proc hwnd:HWND, x:ptr dword, y:ptr dword

    local rect:RECT
    local parent:HWND
    local point:POINT
    invoke GetWindowRect, [hwnd], addr rect

    mov eax, [rect].left
    mov [point].x, eax
    add [point].x, CELL_WIDTH/2
    mov eax, [rect].top
    mov [point].y, eax
    add [point].y, CELL_HEIGHT/2

    invoke GetParent, [hwnd]
    mov [parent], eax

    invoke ScreenToClient, [parent], addr point

    mov ecx, [x]
    mov eax, [point].x
    mov [ecx], eax
    mov ecx, [y]
    mov eax, [point].y
    mov [ecx], eax

    ret

GetChildCenter endp

感谢。

1 个答案:

答案 0 :(得分:1)

范围变量应该使工作表已经合格,因此不需要单独传递它。只需编写你的sub来接受范围参数:

Sub MySub(ByVal rng As Excel.Range)

    MsgBox rng.Address

End Sub