2017-11-01 3 views
0

次のコードは、この配列で<> 0であるかどうかをチェックするために、すべてのセルをステップします(特に合計したくありません)。どのように出力を制限して、これが少なくとも1回は発生するかを列記するだけです。VBAの配列から列インジケータを含むレコードを1つだけ返します

Dim Arr1() As Variant 
Dim num_rows As Long, num_columns As Long 
Dim column_num As Long, row_num As Long 
Dim strTieOutMsg As String 
With ThisWorkbook.Worksheets("Tie Out") 
    ThisWorkbook.Worksheets("Tie Out").Select 
    Arr1 = ThisWorkbook.Worksheets("Tie Out").Range("B15:CG66").Value 
    num_columns = UBound(Arr1, 2) 
    num_rows = UBound(Arr1, 1) 
    For column_num = 1 To num_columns 
     For row_num = 1 To num_rows 
      If Abs(Arr1(row_num, column_num)) > 0.0001 Then 
       strTieOutMsg = strTieOutMsg & Chr(13) & "Failure" 
      End If 
      Next row_num 
      Next column_num 
     End With 
     Debug.Print (strTieOutMsg) 
    End Sub 
+0

列の値を配列に格納しようとしましたか? –

+0

@DavidG。あなたは何を意味するのかわからないVBAを学ぶために1日だけ:)各列は51の値を持っていますので、あなたは何を参照するのですか? – Wells

答えて

0

既に配列を使用しているため、列を格納する別の配列を宣言できます。あなたのコードの一部を使用します。あなたのコードを使用して

Dim Columns (0) as Integer 

まず、別の配列を宣言

If Abs(Arr1(row_num, column_num)) > 0.0001 Then 
    strTieOutMsg = strTieOutMsg & Chr(13) & "Failure" 
    'Increase your Columns array 
    ReDim Columns (ubound(arr, 1) + 1) 
    'Store the colum_num in your Columns Array 
    Columns (ubound(arr, 1)) = column_num 
End If 

この方法であなたの列の値がColumnsアレイに格納されています。

関連する問題