1

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

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

4

1 に答える 1