4个相互链接(活动x)滚动条

时间:2016-02-14 12:51:51

标签: excel vba activex scrollbars

首先,谢谢您的时间,我不是VBA专家,但我会尽我最大的自学。几个星期以来,我一直在努力解决这个问题,但无法完成任务,所以我转向专家。我无法在网络上的任何地方找到适当的解决方案。

问题/挑战:我在工作表上有4个需要链接的活动x滚动条。它们总是需要总和达到100%,这意味着如果我向下拉一个滚动条(我反转它们的滚动方向,向上=向上%,向下=向下%),其他需要按比例增加 - 保持100%。< / p>

它应该如何运作是我有8个“TA” - 认为它们是市场 - 我每个都有4个起始位置。这些也定义了它们应该移动的比例。将起始位置加载到滚动条中没有问题。无视这些TA,只是为了给你上下文。这是我正在努力的运动。例如:

Start TA "xx":

Pos 1: 50%

Pos 2: 20%

Pos 3: 20%

Pos 4: 10%

Sum = 100%

现在我将Scrollbar1从50%上调到70%。这应该导致滚动条2,3和4按以下比例下降,保持100%:

Scrollbar1 + 20%:

Scrollbar2: - 20% x (20/20+20+10) = -8%

Scrollbar3: - 20% x (20/20+20+10) = -8%

Scrollbar4: - 20% x (10/20+20+10) = -4%

Sum = 100%

我尝试了很多选项,但问题是滚动条值都是输入和输出:

1)我只取输出/链接单元格并计算与起始位置的差异,从其他位置按比例减去它们:这会导致“更改事件循环” - 因为来自Pos 1的更改事件触发2,3和4,来自2的改变事件触发1,3和4,......等等。

因此:

Private Sub ScrollBar1_Change()

'scrollbar 1 reverse:

front-end output cell pos 1 = ScrollBar1.Max - ScrollBar1.Value

'other scrollbars:

front-end output cell pos 2 = start pos 2 + (difference start 1 and new pos 1) * (proportion 2)

front-end output cell pos 3 = start pos 3 + (difference start 1 and new pos 1) * (proportion 3)

front-end output cell pos 4 = start pos 4 + (difference start 1 and new pos 1) * (proportion 4)

如果我在更改事件滚动条2 - 4中放入类似的代码,则会导致“更改事件循环”,最终以某种均衡位置结束。

2)我通过在工作表中进行计算来规避变更事件,但随后滚动条并不总是与计算一起移动,从而导致功能问题。

因此:

我在工作表中执行相同的计算,而不是VBA代码:

我从scrollbar1获取输入:

  • 起始值
  • 滚动条值 - &GT;计算工作表中的差异,计算2,3和4的比例,并将其发送回滚动条2,3和4,依此类推......

这样可行但是一旦你开始精心制作动作,“背景值”开始远离显示的滚动条值,限制动作(因为最大需要为100和最小0)。这很难解释和展示,但我希望你们中的一些人有这方面的经验。发布此代码的代码和工作表示例太多了。

结论是我需要以直接,简单和正确的方式链接滚动条,以便它们顺利和正确地移动,因此滚动条总是显示实际位置。

我已经工作了几个星期而且它正在打破我的背影。我似乎无法做到正确,但正如我所说,我不是专家。如果是数学,我只是陈述类似scrollbar1.value + scrollbar2.value + scrollbar3.value + scrollbar4.value = 100%的东西,那就是那样,但当然它不会那样工作......

我只知道有一个简单,美观的解决方案,但我想我只是没有能力。非常感谢你帮我解决这个问题。

亲切的问候,

学家

1 个答案:

答案 0 :(得分:0)

也许会创建某种“记忆”来记住滚动条的最后位置,以便它只使用这些最后的差异进行计算?只是一个想法...

了解GetScrollInfo和其他此类命令,但无法理解它们或让它们工作......

谢谢,

学家