我一直在用 VBA 为 Solidworks 编写一个宏,有一次我想按以下方式重新排列图纸中的图纸——如果有任何图纸被命名为“CUT”,则将该图纸放在前面. Solidworks API 提供了一种重新排列图纸的方法,但它需要按正确顺序排序的图纸名称数组——这很公平。获取工作表名称的方法看起来是这种方法。
因此,我尝试编写一个小函数来以我想要的方式重新排列工作表。我尝试使用的函数调用和函数显示在这里
函数调用
Dim swApp As SldWorks.SldWorks
Dim swDrawing As SldWorks.DrawingDoc
Dim bool As Boolean
Set swApp = Application.SldWorks
Set swDrawing = swApp.ActiveDoc
.
.
.
bool = swDrawing.ReorderSheets(bringToFront(swDrawing.GetSheetNames, "CUT"))
功能定义
Private Function bringToFront(inputArray() As String, _
stringToFind As String) As String()
Dim i As Integer
Dim j As Integer
Dim first As Integer
Dim last As Integer
Dim outputArray() As String
first = LBound(inputArray)
last = UBound(inputArray)
ReDim outputArray(first to last)
For i = first To last
If inputArray(i) = stringToFind Then
For j = first To (i - 1)
outputArray(j + 1) = inputArray(j)
Next j
For j = (i + 1) To last
outputArray(j) = inputArray(j)
Next j
outputArray(first) = stringToFind
End If
Next i
bringToFront = outputArray
End Function
我得到的错误是函数调用行上的“类型不匹配:预期的数组或用户定义类型”。我已经做了很多搜索,我认为我搞砸的东西与静态数组和动态数组有关,但我自己还不能完全找到解决方案。