2017-11-29 2 views
1

일반적으로 단일 값에 대한 변경 관리를위한 좋은 매크로가 있으며 이제는 다차원 배열에 대해 하나의 값을 쓸 수 있지만 오류 처리를 사용하지 않고 차이를 사용할 수 있어야합니다.단일 치수 가변 배열 VBA

대상이 하나의 셀일 때 다른 해결 방법이 있습니까? 아래의 오류 처리는 문제를 처리하지만 나는 그것이 "엉성한"것으로 간주합니다. 제안 사항은 더 나은 방법으로 평가됩니다.

Sub Dims(target As Variant) 

Dim varData As Variant 
Dim i As Integer 
Dim j As Integer 

varData = target 

On Error GoTo Err 

For i = 1 To UBound(varData, 1) 
    For j = 1 To UBound(varData, 2) 
     Debug.Print i, j, varData(i, j) 
    Next j 
Next i 

Err: 
If Err.Number = 13 Then 
    Debug.Print target.Value 
ElseIf Err.Number <> 0 Then 
    MsgBox "Error " & Err.Number & " just occured." 
ElseIf Err.Number <> 13 And Err.Number <> 0 Then 
    Debug.Print "Err No.= "; Err.Number 
Else 
    Debug.Print "No Error" 
End If 
End Sub 
+1

는 매크로를 실행하지 않는 다른 경우 ? 'target.count = 1 Then Exit Sub'를 맨 위에 추가하십시오. – BruceWayne

+0

다른 함수를 사용하여 차원 수를 계산하십시오 : [VBA에서 전달 된 (Variant) 변수의 차원 수를 반환하는 방법] (https : //stackoverflow.com/questions/6901991/how-to-return-the-number-of-dimensions-of-a-variant-variable-passed-to-it-in-v) –

+0

"target.count "목표가 범위라는 사실을 잊어 버렸습니다. 고맙습니다 – mpmcderm

답변

1

나는 target.count = 1의 경우 한 가지 방법을 실행하는 경우 다음 문을 설정하고 target.count> 대상이 하나 개의 세포가 그렇다면 1