EXCEL로 5밀리 방안 선반 CAD(도형 정보)

13421 단어 ExcelExcelVBAInsider
지난번 에 의해 작성된 도형 정보를 나열하는 프로그램을 정의합니다.
QL_INIT는 도형 정보를 저장할 영역을 확보하고 "NAME"이라는 제목을 붙입니다.

RANGE 함수를 더욱 확장하고 통합 에 따라 QL_INIT()를 다시 써서 함수 M_()를 폐지했습니다.
Function QL_SHAPES(Optional S = "")
    On Error Resume Next

    S = QL_INIT(ActiveSheet.Shapes.Count, "NAME")

    For I = 1 To UBound(S)
         S(I, 1) = ActiveSheet.Shapes(I).Name
    Next I
    QL_SHAPES = S
End Function

Function QL_INIT(M, N, Optional L1 = 1, Optional L2 = 1, Optional S = "")
    On Error Resume Next
    If TR_(M) Then
        S = M
        S = QL_INIT(S, N, L1, L2)

    ElseIf TV_(M) Then
        S = QL_INIT(UBound(M, 1), N, L1, L2)

        For I = 1 To UBound(M, 1)
            For J = 1 To UBound(M, 2)
                S(I, J) = M(I, J)
            Next J
        Next I

    ElseIf TS_(M) Then
        S = QL_INIT(M_(M), N, L1, 1)

    ElseIf TS_(N) Then
        T = A_(N, ","): N = UBound(T) - LBound(T) + 1
        S = QL_INIT(M, N, 0, 1)
        For J = 1 To N: S(0, J) = T(J - 1): Next J

    Else
        ReDim S(L1 To M, L2 To N)
        For J = L2 To N: For I = L1 To M: S(I, J) = "": Next I: Next J
    End If

    QL_INIT = S
End Function

QL_INIT 설명



QL_INIT는 함수 M_(),A_()로 자신을 호출합니다.
M_()는 문자열을 2차원 배열로, A_()는 1차원 배열로 변환합니다.
인수의 유형을 다른 유형으로 변환하여 자신을 호출합니다.
그렇다면 인수에 유형 선언이 있으면 오류에 걸립니다.
VBA의 인수형 선언은 유해 무익한 것이라고 생각합니다.
VBA에 대해서는 형식 선언이 필요없는 프로그래밍 방식으로 좋다고 생각합니다.
Function M_(V, Optional S = "")
    On Error Resume Next

    T = SPLIT_(V, ",")
    N = UBound(T) + 1
    U = SPLIT_(T(0), " ")
    M = UBound(U) + 1

    S = QL_INIT(M, N)

    For J = 0 To N
        U = SPLIT_(T(J), " ")
        For I = 0 To M
            S(I + 1, J + 1) = U(I)
        Next I
    Next J
    M_ = S
End Function

Function A_(V, Optional D = "")
    A_ = SPLIT_(V, D)
End Function

Function SPLIT_(V, D)
    SPLIT_ = Split(Trim_(V), D)
End Function

Function Trim_(V)
    Trim_ = WorksheetFunction.Trim(V)
End Function

항투사에 대해서



QL_SHAPES() 함수에는 인수가 없으므로 자동으로 계산되지 않습니다.
그래서 함수 I_()를 끼웁니다.
Function I_(A, V) ' 恒投射
    I_ = V
End Function

인수 A에 적절한 셀의 주소를 지정하면, 지정한 셀의 내용의 변화로, 함수 V가 불리는 구조입니다.

(AA1) =I_(A1,QL_SHAPES())

좋은 웹페이지 즐겨찾기