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
関数呼び出し行に「型の不一致: 配列またはユーザー定義型が必要です」というエラーが表示されます。私はかなりの検索を行いましたが、私が混乱しているのは静的配列と動的配列に関係していると思いますが、自分で解決策を見つけることができませんでした.