我在这里会有点模糊,因为我使用的是专有对象库,在SO上看不到太多动作。也就是说,我还要说在VBA中创建类时我没有很大的直觉。这是我的问题。
我有一个对象。该对象包含一组对象。可以实时生成和消费这组对象。由于这个过程有多紧张,我不应该只是添加所有项目并让它坐下来。我也不应该添加所有并删除所有,但这只是可怕和懒惰的编码,更不用说它可能是最糟糕的性能明智的事实。
我的想法是,我应该能够在某种程度上创建一个为我生成和消费元素的类。我已经对此进行了测试,这绝对是性能的最佳成本。
这是一个例子: 我的主要“页面”包含一个变量:
Public eGroup As tagGroup
Option Explicit
'''''''''''''''''''''''''
'Set up tag group for use
'''''''''''''''''''''''''
Private Sub theTags()
If eGroup Is Nothing Then
Set eGroup = Application.CreateTagGroup("frmItemControl", 250)
With eGroup
.RemoveAll
.Add "State"
.Add "Status"
End With
End If
eGroup.active = True
End Sub
如上所述,通过生成和使用对象的元素(假设以下是除上述变量\代码之外的任何地方),可以最好地找到后续的例行性能:
Public Sub enable(location As String, tagName As String)
Dim tag As String
Dim eTag As tag
' Set PLC order query handshake bit
tag = "Machine\VB_HS_" & tagName
ThisDisplay.eGroup.Add tag
Set eTag = ThisDisplay.eGroup.item(tag)
eTag.Value = True
ThisDisplay.eGroup.Remove tag
Set eTag = Nothing
End Sub
简而言之,我的主页面有一个对象,我需要向对象添加一个元素,能够读取\写入元素值,并删除对象,希望在一行代码中。
我正在寻求你的所有建议。我是在正确的轨道上吗?我可以通过创建课程来做我想做的事吗?如果是这样,你能举例说明我想做什么,或者怎么做?
提前致谢。
更新
另一个例子。如果我只是想在eGroup元素数组中更改一个值,那么当前提出的方法就是每次我想要从数组元素中读取\ write时执行:
tag = "Machine\BinRejectCount"
ThisDisplay.eGroup.Add tag
Set eTag = ThisDisplay.eGroup.item(tag)
eTag.Value = 0
ThisDisplay.eGroup.Remove tag
更新2:
根据Tim William的建议,我对此代码的下一次修改将包含在以下模块中:
Dim eTag As tag
Public Sub w(tagName As String, tagValue As Variant)
tag = tagName
ThisDisplay.eGroup.Add tag
Set eTag = ThisDisplay.eGroup.item(tag)
eTag.Value = tagValue
ThisDisplay.eGroup.Remove tag
Set eTag = Nothing
End Sub
Public Function r(tagName As String) As Variant
tag = tagName
ThisDisplay.eGroup.Add tag
Set eTag = ThisDisplay.eGroup.item(tag)
r = eTag.Value
ThisDisplay.eGroup.Remove tag
Set eTag = Nothing
End Function