【问题标题】:Link ActiveX to Excel将 ActiveX 链接到 Excel
【发布时间】:2014-05-25 16:08:30
【问题描述】:

希望有人能帮忙!

我正在用 VB6 编程并尝试为指标编写一个 activeX 控件。相对于 Excel 打开的工作簿单元格是真还是假,指示器应该改变颜色。指标应该是自动更新的,即指标需要实时链接到 Excel 单元格。

然后我可以将几个指示器 c/w 链接放置到用户窗体上的不同单元格。工作簿在用户窗体中打开并测试,对象引用设置正常。

我不知道如何将指标链接到 Excel 单元格。

这是我正在尝试的一个更大项目的一部分。如果我可以让第一个工作正常,则添加其他控件,例如条形图、开关等。

提前致谢

【问题讨论】:

  • 您确定要使用 VB6 创建新功能吗?

标签: excel vb6


【解决方案1】:

您需要先在控件的引用中添加对 Microsoft Excel x.x 库的引用。

接下来,您应该添加一个 Excel.Worksheet 类型的私有模块级变量,并将其声明为 WithEvents,例如

Private WithEvents m_oWorksheet As Excel.Worksheet

您还应该创建一个名为 Worksheet 的 Property Set 过程来设置此变量。

然后你应该为其更改事件添加代码,例如

Private Sub m_oWorksheet_Change(ByVal Target As Range)
    If Target.Column = 1 And Target.Row = 2 Then ' m_oWorksheet.Range("A2")
        'Do some coding here
    End If
End Sub

很明显,.Column = 1 和 .Row = 2 会被你感兴趣的单元格坐标替换掉。我原来用的坐标像“A2”,结果发现返回的对象是m_oWorksheet.Range("A2")不能直接与 Target 对象比较,例如

If Target Is m_oWorksheet.Range("A2") Then

我试图从 Target 中提取单元格引用“A2”,但我似乎无法找到方法,除非您编写一个函数来将 Column/Row 转换为字符串引用。

请注意我之前提供的答案是非常错误的,因为我正在测试

If Target = m_oWorksheet.Range("A2) Then

... 这只是因为默认值属性是相同的。如果任何更改的单元格与“监视”单元格具有相同的值,这将失败。

【讨论】:

  • 我只需要在 "Range("A2")" 之前添加工作表引用
  • @user3518720 啊!我没有注意到!我最好修一下。
猜你喜欢
  • 2017-07-11
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多