控制鼠标移动或鼠标拖动时调整大小

时间:2017-09-24 18:13:39

标签: vba excel-vba excel

我正在使用Excel VBA创建一个简单的程序,这将允许我在鼠标移动或鼠标拖动时在运行时调整控件的大小。但是,似乎我得到了不同的结果

我不确定为什么我得到不同的最终宽度结果,但这是我的方式:

Manager::properties()

以下是我的表单的样子:

enter image description here

正如您在屏幕截图中看到的那样,TextBox的宽度应该增加9,因为它是鼠标光标距控件上鼠标光标初始点击(位置)所覆盖的距离。

我坚持这个。为什么它没有按预期工作?

1 个答案:

答案 0 :(得分:0)

需要全局变量initialWidth。

Dim initialX, initialY, xmove, initialWidth
Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As _
    Integer, ByVal X As Single, ByVal Y As Single)

    initialX = X
    initialY = Y
    initialWidth = TextBox1.Width '<~~setting initialWidth
    xmove = True
    TextBox2.Value = initialX
    TextBox3.Value = initialY
End Sub

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As _
    Integer, ByVal X As Single, ByVal Y As Single)
    Dim newx, newy As Single

    If xmove = True Then
        newx = Math.Abs(X - initialX)
        newy = Math.Abs(Y - initialY)
        'TextBox1.Width = TextBox1.Width + newx
        TextBox1.Width = initialWidth + newx
        TextBox5.Value = newx
        TextBox6.Value = newy
    End If
End Sub