我正在使用Excel VBA创建一个简单的程序,这将允许我在鼠标移动或鼠标拖动时在运行时调整控件的大小。但是,似乎我得到了不同的结果
我不确定为什么我得到不同的最终宽度结果,但这是我的方式:
Manager::properties()
以下是我的表单的样子:
正如您在屏幕截图中看到的那样,TextBox的宽度应该增加9,因为它是鼠标光标距控件上鼠标光标初始点击(位置)所覆盖的距离。
我坚持这个。为什么它没有按预期工作?
答案 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