Childe jun 2023-11-05 18:28 采纳率: 88.9%
浏览 9
已结题

关于userform创建类获取通用窗体失败的问题

'这是窗体里代码
'Dim xMouse As Integer, yMouse As Integer
'Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'    ' 按下鼠标左键时
'    If Button = 1 Then
'        ' 记录鼠标按下时的坐标
'        xMouse = X
'        yMouse = Y
'    End If
'End Sub
'Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'    ' 移动鼠标时
'    If Button = 1 Then
'        ' 计算窗体应该移动的距离
'        Me.StartUpPosition = 0 ' 设置窗体的启动位置为手动
'        Me.Left = Me.Left + (X - xMouse)
'        Me.Top = Me.Top + (Y - yMouse)
'    End If
'End Sub
Dim Cls As FormMove
Private Sub UserForm_Initialize()
 Set Cls = New FormMove
 Cls.GetForm Me
End Sub

Option Explicit
'类模块代码
Private WithEvents myForm As MSForms.UserForm '标题栏
Private xMouse As Integer, yMouse As Integer

Sub GetForm(Form As Object)
    Set myForm = Form 
End Sub
Private Sub myForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ' 按下鼠标左键时
    If Button = 1 Then
        ' 记录鼠标按下时的坐标
        xMouse = X
        yMouse = Y
    End If
End Sub
Private Sub myForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ' 移动鼠标时
    If Button = 1 Then
        ' 计算窗体应该移动的距离
        myForm.StartUpPosition = 0 ' 设置窗体的启动位置为手动
        myForm.Left = myForm.Left + (X - xMouse)
        myForm.Top = myForm.Top + (Y - yMouse)
    End If
End Sub

以上是我创建的一个class类,在窗体类被注释的部分是实现按下鼠标移动窗体的代码,我想将这一部分代码封装成一个类,可以供其他窗体使用,但是在类里面执行到改变myform位置的时候就会报错,谁能解答一下

  • 写回答

11条回答 默认 最新

  • threenewbee 2023-11-05 20:13
    关注

    你把错误信息贴一下,或者可以远程帮你看看。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(10条)

报告相同问题?

问题事件

  • 系统已结题 11月14日
  • 已采纳回答 11月6日
  • 赞助了问题酬金15元 11月5日
  • 修改了问题 11月5日
  • 展开全部