我正在一个仪表板项目中工作,在该项目中,我将拥有三个值:最小值,最大值和当前值。最小值和最大值将是条形图的端点,我想在条形图的适当位置放置一个包含当前值的文本框。见下文:

是否可以在Excel中执行此操作,如果可以,我将如何实现这一目标。我有一些使用Visual Basic的经验,但是我以前从未遇到过。

最终,我尝试通过以下链接创建一个excel版本的仪表板:

Link to Dashboard

最佳答案

我喜欢您的想法,因此检查了完整的代码。结果如下:

Sub SolutionShape(currentVal)

Dim shpBar As Shape, shpCurrent As Shape

'let's assume we have only two shapes on the Activesheet
Set shpBar = ActiveSheet.Shapes(1)
Set shpCurrent = ActiveSheet.Shapes(2)

Dim barMin As Double, barMax As Double
    barMin = 0.51              'both values could be taken from sheet
    barMax = 6.75

'let's do it visualy complicated this time :)
With shpCurrent
    .Left = (-.Width / 2 + shpBar.Left) + _
        (((currentVal - barMin) / (barMax - barMin)) * shpBar.Width)

    **'EDITED- adding information about current value:**
    .TextFrame.Characters.Text = currentVal
End With

End Sub

从立即窗口的事件中调用程序进行测试,例如:
SolutionShape 0.51      'go to beginning
SolutionShape 6.75      'go to end

该解决方案将在您放置形状以及设置形状的任何新尺寸的地方都可以使用。

10-06 07:11