VBA中设置对象的问题
也许这个问题很简单,但我在谷歌上找不到答案 所以,我有我的班级名单。我在程序中初始化此类的对象数组:VBA中设置对象的问题,vba,object,hyperlink,Vba,Object,Hyperlink,也许这个问题很简单,但我在谷歌上找不到答案 所以,我有我的班级名单。我在程序中初始化此类的对象数组: ReDim WSheets(twb.Sheets.Count) For i = 0 To UBound(WSheets) Set WSheets(i) = New WSheet Next i 然后,我尝试读取新值并按插入排序: For i = twb.Sheets.Count To 2 Step -1 flag = False tsName = twb.Shee
ReDim WSheets(twb.Sheets.Count)
For i = 0 To UBound(WSheets)
Set WSheets(i) = New WSheet
Next i
然后,我尝试读取新值并按插入排序:
For i = twb.Sheets.Count To 2 Step -1
flag = False
tsName = twb.Sheets(i).Name
twb.Sheets(i).Delete
twb.Save
CurShW = curLen - FileLen(TempFName)
curLen = FileLen(TempFName)
For j = UBound(WSheets) To 2 Step -1
If WSheets(j - 1).Weight < CurShW Then
Set WSheets(j) = WSheets(j - 1)
Else
WSheets(j).SetName (tsName)
WSheets(j).SetWeight (CurShW)
flag = True
Exit For
End If
Next j
If Not flag Then
Set WSheets(1) = New WSheet
WSheets(1).SetName (tsName)
WSheets(1).SetWeight (CurShW)
flag = False
End If
Next i
编辑将函数转换为
类
方法
必须克隆WSheet
对象,而不是引用它
例如,您可以将Clone()
方法添加到WSheet
类中
Function Clone() As WSheet
Dim newWSheet As WSheet
Set newWSheet = New WSheet
newWSheet.SetName SName
newWSheet.SetWeight SWeight
Set Clone = newWSheet
End Function
然后在主代码更改中:
Set WSheets(j) = WSheets(j - 1)
致:
将代码上传到您的
WSheet
类中,它将允许我们(或我)尝试跟踪PS中添加的现象。谢谢@PG_Develop,你通过了吗?是的,我自己也做了类似的事情。当我问这个问题时,我本想学习一些“克隆”对象的内置方法……但你们的解决方案很有效,并没有人提出更好的方法。所以,假设VBA中没有这种内置方式,我将把您的答案标记为解决方案。非常感谢用户!
Set WSheets(j) = WSheets(j - 1)
Set WSheets(j) = WSheets(j - 1).Clone