是否可以使用VBA将Windows窗体居中?

时间:2018-10-19 06:48:40

标签: vba

我的VBA宏正在格式化USB驱动器,然后再在其上复制数据。 整个过程已经相当好了。
因此,问题在于Windows格式工具窗口正在屏幕左上角的某个地方打开,而不是像我想要的那样在屏幕中间居中且漂亮。

那么有可能将它们居中打开吗?如果没有,那么以后有什么东西可以居中吗?

这是窗口启动的方式:

Private Sub format_drive(selected_volume)        
    Dim Result&, Drive&
    varray = Split(selected_volume, ":")
    Drive = Asc(varray(0)) - 65
    Result = SHFormatDrive(0, Drive, SHFD_CAPACITY_DEFAULT, SHFD_FORMAT_QUICK)
End Sub

1 个答案:

答案 0 :(得分:-1)

如果它是一个宏,则必须有一个父应用程序,很可能是Excel。从Excel下启动用户窗体时,该窗体将放置在活动窗口中(可以最大化)。如果要更改表格的位置,请根据需要选择以下示例:

Private Sub UserForm_initialize()

     Me.Show vbModeless

     With Me                 ' this must come after .Show
         .Top = (Abs(Application.Top) + Application.Height - .Height)/2
         .Left = (Abs(Application.Left) + ActiveWindow.Width - .Width)/2
     End With

Application.Top可以否定,可以应用Abs()来处理。它不是最正确的,但是很安全。或者,您可以使用ActiveWindows

    With Me
        .Top = (Application.ActiveWindow.Height - .Height)/2
        .Left = (Application.ActiveWindow.Width - .Width)/2
    End With

在高级级别上,您可以使用GetDeviceCaps(HDC hdc, HORZRES)GetDeviceCaps(HDC hdc, VERTRES)来获取屏幕的像素数。详情请参见:GetDeviceCaps