我目前在Qlikview中使用VBScript,但遇到了问题。我的代码目前看起来像这样:
sub resize
set obj = ActiveDocument.GetSheetObject("TX05")
set fr = obj.GetFrameDef
set pos = fr.Rect
set WidthUser = ActiveDocument.Variables("vWidth")
' set OriginalWidth = pos.Width
' set OriginalHeight = pos.Height
' Ratio is 2.5
pos.Width = Cint(WidthUser.GetContent.String) * 2.5
' pos.Height = vPreferredWidth/vOriginalWidth * vOriginalHeight
pos.Height = 200 * 2.5
obj.SetFrame fr,true,dummy
msgbox("Changed Width to: " & pos.Width/2.5 & " " & Chr(13) & "Changed Height to: " & pos.Height/2.5)
End sub
vWidth是一个变量,用户可以在其中输入所需的宽度。
那么我想要实现的目标是什么?我希望用户能够输入他想要的对象宽度,然后按下一个名为“调整大小”的按钮。按下按钮时,对象宽度应更改为所需的宽度,对象高度也应相对于宽度的变化而变化。
例如,我们从一个宽度为120,高度为200的对象开始。然后用户输入所需的宽度60,然后按下“调整大小”按钮。对象宽度应更改为60,对象高度应更改为100(60/120 * 200 = 100)。因此,在最终结果中,比率宽度/高度仍然相同(120/200对60/100)。
我遇到的问题是尝试捕捉对象的原始宽度和高度。我尝试使用:
set OriginalWidth = pos.Width
set OriginalHeight = pos.Height
但这根本不起作用。我尝试了各种各样的变化但到目前为止没有任何工作。我不明白的是,当我输入时:
msgbox(pos.Width)
我确实得到了一个结果,但是当我使用时:
set OriginalWidth = pos.Width
msgbox(OriginalWidth)
我什么都没得到(我被扔进了我的剧本)。
任何人都可以帮我解决这个问题吗?也会喜欢对其余代码的一些反馈,因为我刚开始学习这个。
提前致谢!
在帮助后编辑我将代码更改为:
sub resize
' Ratio is 2.5
set obj = ActiveDocument.GetSheetObject("TX05")
set fr = obj.GetFrameDef
set pos = fr.Rect
set WidthUser = ActiveDocument.Variables("vWidth")
set HeightUser = ActiveDocument.Variables("vHeight")
OriginalWidth = pos.Width
OriginalHeight = pos.Height
DesiredUserWidth = Cint(WidthUser.GetContent.String)
pos.Width = DesiredUserWidth * 2.5
pos.Height = DesiredUserWidth / OriginalWidth * OriginalHeight * 2.5
obj.SetFrame fr,true,dummy
msgbox("Changed Width to: " & pos.Width/2.5 & " " & Chr(13) & "Changed Height to: " & pos.Height/2.5)
End sub
答案 0 :(得分:1)
阅读docs for Set,从现在起,只有在将对象分配给变量时才使用它。
set OriginalWidth = pos.Width
==>
OriginalWidth = pos.Width